home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Utilities / MView / gxu / stripoutline.cod < prev    next >
Encoding:
Text File  |  2004-09-30  |  152.1 KB  |  5,023 lines

  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035 
  2.  
  3.     TITLE    .\stripoutline.cpp
  4.     .386P
  5. include listing.inc
  6. if @Version gt 510
  7. .model FLAT
  8. else
  9. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  10. _TEXT    ENDS
  11. _DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
  12. _DATA    ENDS
  13. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  14. CONST    ENDS
  15. _BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
  16. _BSS    ENDS
  17. $$SYMBOLS    SEGMENT BYTE USE32 'DEBSYM'
  18. $$SYMBOLS    ENDS
  19. _TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
  20. _TLS    ENDS
  21. ;    COMDAT ??_C@_04IHCGOIEL@mWd1?$AA@
  22. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  23. CONST    ENDS
  24. ;    COMDAT ??_C@_04KMALLLII@mWd2?$AA@
  25. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  26. CONST    ENDS
  27. ;    COMDAT ??_C@_04LFBAIKMJ@mWd3?$AA@
  28. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  29. CONST    ENDS
  30. ;    COMDAT ??_C@_04PKFBBMAO@mWd4?$AA@
  31. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  32. CONST    ENDS
  33. ;    COMDAT ??_C@_04ODEKCNEP@mWd5?$AA@
  34. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  35. CONST    ENDS
  36. ;    COMDAT ??_C@_04MIGHHOIM@mWd6?$AA@
  37. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  38. CONST    ENDS
  39. ;    COMDAT ??_C@_04NBHMEPMN@mWd7?$AA@
  40. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  41. CONST    ENDS
  42. ;    COMDAT ??_C@_04FGOEFDAC@mWd8?$AA@
  43. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  44. CONST    ENDS
  45. ;    COMDAT ??_C@_04EPPPGCED@mWd9?$AA@
  46. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  47. CONST    ENDS
  48. ;    COMDAT ??_C@_05DOMPIIAD@mWd10?$AA@
  49. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  50. CONST    ENDS
  51. ;    COMDAT ??_C@_05CHNELJEC@mWd11?$AA@
  52. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  53. CONST    ENDS
  54. ;    COMDAT ??_C@_05MPJOKIB@mWd12?$AA@
  55. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  56. CONST    ENDS
  57. ;    COMDAT ??_C@_05BFOCNLMA@mWd13?$AA@
  58. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  59. CONST    ENDS
  60. ;    COMDAT ??_C@_05FKKDENAH@mWd14?$AA@
  61. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  62. CONST    ENDS
  63. ;    COMDAT ??_C@_05EDLIHMEG@mWd15?$AA@
  64. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  65. CONST    ENDS
  66. ;    COMDAT ??_C@_05GIJFCPIF@mWd16?$AA@
  67. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  68. CONST    ENDS
  69. ;    COMDAT ??_C@_05HBIOBOME@mWd17?$AA@
  70. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  71. CONST    ENDS
  72. ;    COMDAT ??_C@_05PGBGACAL@mWd18?$AA@
  73. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  74. CONST    ENDS
  75. ;    COMDAT ??_C@_05OPANDDEK@mWd19?$AA@
  76. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  77. CONST    ENDS
  78. ;    COMDAT ??_C@_05DMIJDGFK@mWd20?$AA@
  79. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  80. CONST    ENDS
  81. ;    COMDAT ??_C@_05CFJCAHBL@mWd21?$AA@
  82. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  83. CONST    ENDS
  84. ;    COMDAT ??_C@_05OLPFENI@mWd22?$AA@
  85. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  86. CONST    ENDS
  87. ;    COMDAT ??_C@_05BHKEGFJJ@mWd23?$AA@
  88. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  89. CONST    ENDS
  90. ;    COMDAT ??_C@_05FIOFPDFO@mWd24?$AA@
  91. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  92. CONST    ENDS
  93. ;    COMDAT ??_C@_05EBPOMCBP@mWd25?$AA@
  94. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  95. CONST    ENDS
  96. ;    COMDAT ??_C@_05GKNDJBNM@mWd26?$AA@
  97. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  98. CONST    ENDS
  99. ;    COMDAT ??_C@_05HDMIKAJN@mWd27?$AA@
  100. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  101. CONST    ENDS
  102. ;    COMDAT ??_C@_05PEFALMFC@mWd28?$AA@
  103. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  104. CONST    ENDS
  105. ;    COMDAT ??_C@_04BEMIBDAE@mTot?$AA@
  106. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  107. CONST    ENDS
  108. ;    COMDAT ??_C@_07HHMNENJH@mWorlds?$AA@
  109. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  110. CONST    ENDS
  111. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  112. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  113. CONST    ENDS
  114. ;    COMDAT ??0CStripOutline@@QAE@XZ
  115. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  116. _TEXT    ENDS
  117. ;    COMDAT ??1CStripOutline@@QAE@XZ
  118. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  119. _TEXT    ENDS
  120. ;    COMDAT ?BConnected@@YA_NPAI0@Z
  121. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  122. _TEXT    ENDS
  123. ;    COMDAT ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z
  124. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  125. _TEXT    ENDS
  126. ;    COMDAT ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z
  127. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  128. _TEXT    ENDS
  129. ;    COMDAT ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z
  130. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  131. _TEXT    ENDS
  132. ;    COMDAT ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z
  133. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  134. _TEXT    ENDS
  135. ;    COMDAT ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z
  136. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  137. _TEXT    ENDS
  138. ;    COMDAT ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z
  139. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  140. _TEXT    ENDS
  141. ;    COMDAT ?Init@CStripOutline@@QAEJPAUID3DXBaseMesh@@@Z
  142. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  143. _TEXT    ENDS
  144. ;    COMDAT ?Draw@CStripOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z
  145. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  146. _TEXT    ENDS
  147. ;    COMDAT ?CreateEmptyOutline@CStripOutline@@AAEJXZ
  148. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  149. _TEXT    ENDS
  150. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  151. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  152. _TEXT    ENDS
  153. ;    COMDAT ??0D3DXMATRIX@@QAE@XZ
  154. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  155. _TEXT    ENDS
  156. ;    COMDAT ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ
  157. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  158. _TEXT    ENDS
  159. ;    COMDAT ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z
  160. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  161. _TEXT    ENDS
  162. ;    COMDAT ??0CD3DXCrackDecl1@@QAE@XZ
  163. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  164. _TEXT    ENDS
  165. ;    COMDAT ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z
  166. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  167. _TEXT    ENDS
  168. ;    COMDAT ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z
  169. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  170. _TEXT    ENDS
  171. ;    COMDAT ?CWeights@CD3DXCrackDecl1@@QAEHXZ
  172. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  173. _TEXT    ENDS
  174. ;    COMDAT ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z
  175. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  176. _TEXT    ENDS
  177. ;    COMDAT ?CWeights@DXCrackFVF@@QAEKXZ
  178. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  179. _TEXT    ENDS
  180. ;    COMDAT ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z
  181. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  182. _TEXT    ENDS
  183. ;    COMDAT ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  184. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  185. _TEXT    ENDS
  186. ;    COMDAT ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z
  187. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  188. _TEXT    ENDS
  189. ;    COMDAT ??_0D3DXVECTOR3@@QAEAAU0@M@Z
  190. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  191. _TEXT    ENDS
  192. ;    COMDAT ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  193. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  194. _TEXT    ENDS
  195. ;    COMDAT ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z
  196. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  197. _TEXT    ENDS
  198. ;    COMDAT ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z
  199. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  200. _TEXT    ENDS
  201. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  202. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  203. _TEXT    ENDS
  204. ;    COMDAT ??0DXCrackFVF@@QAE@K@Z
  205. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  206. _TEXT    ENDS
  207. FLAT    GROUP _DATA, CONST, _BSS
  208.     ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
  209. endif
  210.  
  211. INCLUDELIB LIBC
  212. INCLUDELIB OLDNAMES
  213.  
  214. PUBLIC    ??_C@_04IHCGOIEL@mWd1?$AA@            ; `string'
  215. PUBLIC    ??_C@_04KMALLLII@mWd2?$AA@            ; `string'
  216. PUBLIC    ??_C@_04LFBAIKMJ@mWd3?$AA@            ; `string'
  217. PUBLIC    ??_C@_04PKFBBMAO@mWd4?$AA@            ; `string'
  218. PUBLIC    ??_C@_04ODEKCNEP@mWd5?$AA@            ; `string'
  219. PUBLIC    ??_C@_04MIGHHOIM@mWd6?$AA@            ; `string'
  220. PUBLIC    ??_C@_04NBHMEPMN@mWd7?$AA@            ; `string'
  221. PUBLIC    ??_C@_04FGOEFDAC@mWd8?$AA@            ; `string'
  222. PUBLIC    ??_C@_04EPPPGCED@mWd9?$AA@            ; `string'
  223. PUBLIC    ??_C@_05DOMPIIAD@mWd10?$AA@            ; `string'
  224. PUBLIC    ??_C@_05CHNELJEC@mWd11?$AA@            ; `string'
  225. PUBLIC    ??_C@_05MPJOKIB@mWd12?$AA@            ; `string'
  226. PUBLIC    ??_C@_05BFOCNLMA@mWd13?$AA@            ; `string'
  227. PUBLIC    ??_C@_05FKKDENAH@mWd14?$AA@            ; `string'
  228. PUBLIC    ??_C@_05EDLIHMEG@mWd15?$AA@            ; `string'
  229. PUBLIC    ??_C@_05GIJFCPIF@mWd16?$AA@            ; `string'
  230. PUBLIC    ??_C@_05HBIOBOME@mWd17?$AA@            ; `string'
  231. PUBLIC    ??_C@_05PGBGACAL@mWd18?$AA@            ; `string'
  232. PUBLIC    ??_C@_05OPANDDEK@mWd19?$AA@            ; `string'
  233. PUBLIC    ??_C@_05DMIJDGFK@mWd20?$AA@            ; `string'
  234. PUBLIC    ??_C@_05CFJCAHBL@mWd21?$AA@            ; `string'
  235. PUBLIC    ??_C@_05OLPFENI@mWd22?$AA@            ; `string'
  236. PUBLIC    ??_C@_05BHKEGFJJ@mWd23?$AA@            ; `string'
  237. PUBLIC    ??_C@_05FIOFPDFO@mWd24?$AA@            ; `string'
  238. PUBLIC    ??_C@_05EBPOMCBP@mWd25?$AA@            ; `string'
  239. PUBLIC    ??_C@_05GKNDJBNM@mWd26?$AA@            ; `string'
  240. PUBLIC    ??_C@_05HDMIKAJN@mWd27?$AA@            ; `string'
  241. PUBLIC    ??_C@_05PEFALMFC@mWd28?$AA@            ; `string'
  242. ;    COMDAT ??_C@_04IHCGOIEL@mWd1?$AA@
  243. CONST    SEGMENT
  244. ??_C@_04IHCGOIEL@mWd1?$AA@ DB 'mWd1', 00H        ; `string'
  245. CONST    ENDS
  246. ;    COMDAT ??_C@_04KMALLLII@mWd2?$AA@
  247. CONST    SEGMENT
  248. ??_C@_04KMALLLII@mWd2?$AA@ DB 'mWd2', 00H        ; `string'
  249. CONST    ENDS
  250. ;    COMDAT ??_C@_04LFBAIKMJ@mWd3?$AA@
  251. CONST    SEGMENT
  252. ??_C@_04LFBAIKMJ@mWd3?$AA@ DB 'mWd3', 00H        ; `string'
  253. CONST    ENDS
  254. ;    COMDAT ??_C@_04PKFBBMAO@mWd4?$AA@
  255. CONST    SEGMENT
  256. ??_C@_04PKFBBMAO@mWd4?$AA@ DB 'mWd4', 00H        ; `string'
  257. CONST    ENDS
  258. ;    COMDAT ??_C@_04ODEKCNEP@mWd5?$AA@
  259. CONST    SEGMENT
  260. ??_C@_04ODEKCNEP@mWd5?$AA@ DB 'mWd5', 00H        ; `string'
  261. CONST    ENDS
  262. ;    COMDAT ??_C@_04MIGHHOIM@mWd6?$AA@
  263. CONST    SEGMENT
  264. ??_C@_04MIGHHOIM@mWd6?$AA@ DB 'mWd6', 00H        ; `string'
  265. CONST    ENDS
  266. ;    COMDAT ??_C@_04NBHMEPMN@mWd7?$AA@
  267. CONST    SEGMENT
  268. ??_C@_04NBHMEPMN@mWd7?$AA@ DB 'mWd7', 00H        ; `string'
  269. CONST    ENDS
  270. ;    COMDAT ??_C@_04FGOEFDAC@mWd8?$AA@
  271. CONST    SEGMENT
  272. ??_C@_04FGOEFDAC@mWd8?$AA@ DB 'mWd8', 00H        ; `string'
  273. CONST    ENDS
  274. ;    COMDAT ??_C@_04EPPPGCED@mWd9?$AA@
  275. CONST    SEGMENT
  276. ??_C@_04EPPPGCED@mWd9?$AA@ DB 'mWd9', 00H        ; `string'
  277. CONST    ENDS
  278. ;    COMDAT ??_C@_05DOMPIIAD@mWd10?$AA@
  279. CONST    SEGMENT
  280. ??_C@_05DOMPIIAD@mWd10?$AA@ DB 'mWd10', 00H        ; `string'
  281. CONST    ENDS
  282. ;    COMDAT ??_C@_05CHNELJEC@mWd11?$AA@
  283. CONST    SEGMENT
  284. ??_C@_05CHNELJEC@mWd11?$AA@ DB 'mWd11', 00H        ; `string'
  285. CONST    ENDS
  286. ;    COMDAT ??_C@_05MPJOKIB@mWd12?$AA@
  287. CONST    SEGMENT
  288. ??_C@_05MPJOKIB@mWd12?$AA@ DB 'mWd12', 00H        ; `string'
  289. CONST    ENDS
  290. ;    COMDAT ??_C@_05BFOCNLMA@mWd13?$AA@
  291. CONST    SEGMENT
  292. ??_C@_05BFOCNLMA@mWd13?$AA@ DB 'mWd13', 00H        ; `string'
  293. CONST    ENDS
  294. ;    COMDAT ??_C@_05FKKDENAH@mWd14?$AA@
  295. CONST    SEGMENT
  296. ??_C@_05FKKDENAH@mWd14?$AA@ DB 'mWd14', 00H        ; `string'
  297. CONST    ENDS
  298. ;    COMDAT ??_C@_05EDLIHMEG@mWd15?$AA@
  299. CONST    SEGMENT
  300. ??_C@_05EDLIHMEG@mWd15?$AA@ DB 'mWd15', 00H        ; `string'
  301. CONST    ENDS
  302. ;    COMDAT ??_C@_05GIJFCPIF@mWd16?$AA@
  303. CONST    SEGMENT
  304. ??_C@_05GIJFCPIF@mWd16?$AA@ DB 'mWd16', 00H        ; `string'
  305. CONST    ENDS
  306. ;    COMDAT ??_C@_05HBIOBOME@mWd17?$AA@
  307. CONST    SEGMENT
  308. ??_C@_05HBIOBOME@mWd17?$AA@ DB 'mWd17', 00H        ; `string'
  309. CONST    ENDS
  310. ;    COMDAT ??_C@_05PGBGACAL@mWd18?$AA@
  311. CONST    SEGMENT
  312. ??_C@_05PGBGACAL@mWd18?$AA@ DB 'mWd18', 00H        ; `string'
  313. CONST    ENDS
  314. ;    COMDAT ??_C@_05OPANDDEK@mWd19?$AA@
  315. CONST    SEGMENT
  316. ??_C@_05OPANDDEK@mWd19?$AA@ DB 'mWd19', 00H        ; `string'
  317. CONST    ENDS
  318. ;    COMDAT ??_C@_05DMIJDGFK@mWd20?$AA@
  319. CONST    SEGMENT
  320. ??_C@_05DMIJDGFK@mWd20?$AA@ DB 'mWd20', 00H        ; `string'
  321. CONST    ENDS
  322. ;    COMDAT ??_C@_05CFJCAHBL@mWd21?$AA@
  323. CONST    SEGMENT
  324. ??_C@_05CFJCAHBL@mWd21?$AA@ DB 'mWd21', 00H        ; `string'
  325. CONST    ENDS
  326. ;    COMDAT ??_C@_05OLPFENI@mWd22?$AA@
  327. CONST    SEGMENT
  328. ??_C@_05OLPFENI@mWd22?$AA@ DB 'mWd22', 00H        ; `string'
  329. CONST    ENDS
  330. ;    COMDAT ??_C@_05BHKEGFJJ@mWd23?$AA@
  331. CONST    SEGMENT
  332. ??_C@_05BHKEGFJJ@mWd23?$AA@ DB 'mWd23', 00H        ; `string'
  333. CONST    ENDS
  334. ;    COMDAT ??_C@_05FIOFPDFO@mWd24?$AA@
  335. CONST    SEGMENT
  336. ??_C@_05FIOFPDFO@mWd24?$AA@ DB 'mWd24', 00H        ; `string'
  337. CONST    ENDS
  338. ;    COMDAT ??_C@_05EBPOMCBP@mWd25?$AA@
  339. CONST    SEGMENT
  340. ??_C@_05EBPOMCBP@mWd25?$AA@ DB 'mWd25', 00H        ; `string'
  341. CONST    ENDS
  342. ;    COMDAT ??_C@_05GKNDJBNM@mWd26?$AA@
  343. CONST    SEGMENT
  344. ??_C@_05GKNDJBNM@mWd26?$AA@ DB 'mWd26', 00H        ; `string'
  345. CONST    ENDS
  346. ;    COMDAT ??_C@_05HDMIKAJN@mWd27?$AA@
  347. CONST    SEGMENT
  348. ??_C@_05HDMIKAJN@mWd27?$AA@ DB 'mWd27', 00H        ; `string'
  349. CONST    ENDS
  350. ;    COMDAT ??_C@_05PEFALMFC@mWd28?$AA@
  351. CONST    SEGMENT
  352. ??_C@_05PEFALMFC@mWd28?$AA@ DB 'mWd28', 00H        ; `string'
  353. CONST    ENDS
  354. _DATA    SEGMENT
  355. _x_rgszMatrix DD FLAT:??_C@_04IHCGOIEL@mWd1?$AA@
  356.     DD    FLAT:??_C@_04KMALLLII@mWd2?$AA@
  357.     DD    FLAT:??_C@_04LFBAIKMJ@mWd3?$AA@
  358.     DD    FLAT:??_C@_04PKFBBMAO@mWd4?$AA@
  359.     DD    FLAT:??_C@_04ODEKCNEP@mWd5?$AA@
  360.     DD    FLAT:??_C@_04MIGHHOIM@mWd6?$AA@
  361.     DD    FLAT:??_C@_04NBHMEPMN@mWd7?$AA@
  362.     DD    FLAT:??_C@_04FGOEFDAC@mWd8?$AA@
  363.     DD    FLAT:??_C@_04EPPPGCED@mWd9?$AA@
  364.     DD    FLAT:??_C@_05DOMPIIAD@mWd10?$AA@
  365.     DD    FLAT:??_C@_05CHNELJEC@mWd11?$AA@
  366.     DD    FLAT:??_C@_05MPJOKIB@mWd12?$AA@
  367.     DD    FLAT:??_C@_05BFOCNLMA@mWd13?$AA@
  368.     DD    FLAT:??_C@_05FKKDENAH@mWd14?$AA@
  369.     DD    FLAT:??_C@_05EDLIHMEG@mWd15?$AA@
  370.     DD    FLAT:??_C@_05GIJFCPIF@mWd16?$AA@
  371.     DD    FLAT:??_C@_05HBIOBOME@mWd17?$AA@
  372.     DD    FLAT:??_C@_05PGBGACAL@mWd18?$AA@
  373.     DD    FLAT:??_C@_05OPANDDEK@mWd19?$AA@
  374.     DD    FLAT:??_C@_05DMIJDGFK@mWd20?$AA@
  375.     DD    FLAT:??_C@_05CFJCAHBL@mWd21?$AA@
  376.     DD    FLAT:??_C@_05OLPFENI@mWd22?$AA@
  377.     DD    FLAT:??_C@_05BHKEGFJJ@mWd23?$AA@
  378.     DD    FLAT:??_C@_05FIOFPDFO@mWd24?$AA@
  379.     DD    FLAT:??_C@_05EBPOMCBP@mWd25?$AA@
  380.     DD    FLAT:??_C@_05GKNDJBNM@mWd26?$AA@
  381.     DD    FLAT:??_C@_05HDMIKAJN@mWd27?$AA@
  382.     DD    FLAT:??_C@_05PEFALMFC@mWd28?$AA@
  383. _DATA    ENDS
  384. CONST    SEGMENT
  385. _x_rgdwTexCoordSize DD 08H
  386.     DD    0cH
  387.     DD    010H
  388.     DD    04H
  389. CONST    ENDS
  390. PUBLIC    ??1CStripOutline@@QAE@XZ            ; CStripOutline::~CStripOutline
  391. EXTRN    ??3@YAXPAX@Z:NEAR                ; operator delete
  392. ; Function compile flags: /Ogs
  393. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\stripoutline.cpp
  394. ;    COMDAT ??1CStripOutline@@QAE@XZ
  395. _TEXT    SEGMENT
  396. ??1CStripOutline@@QAE@XZ PROC NEAR            ; CStripOutline::~CStripOutline, COMDAT
  397. ; _this$ = ecx
  398.  
  399. ; 63   : }
  400.  
  401.   00000    8b ff         npad     2
  402.   00002    56         push     esi
  403.  
  404. ; 59   : {
  405.  
  406.   00003    8b f1         mov     esi, ecx
  407.  
  408. ; 60   :     GXRELEASE(m_pVertexBuffer);
  409.  
  410.   00005    8b 46 4c     mov     eax, DWORD PTR [esi+76]
  411.   00008    85 c0         test     eax, eax
  412.   0000a    74 0a         je     SHORT $L56309
  413.   0000c    8b 08         mov     ecx, DWORD PTR [eax]
  414.   0000e    50         push     eax
  415.   0000f    ff 51 08     call     DWORD PTR [ecx+8]
  416.   00012    83 66 4c 00     and     DWORD PTR [esi+76], 0
  417. $L56309:
  418.  
  419. ; 61   :     GXRELEASE(m_pDecl);
  420.  
  421.   00016    8b 46 50     mov     eax, DWORD PTR [esi+80]
  422.   00019    85 c0         test     eax, eax
  423.   0001b    74 0a         je     SHORT $L56313
  424.   0001d    8b 08         mov     ecx, DWORD PTR [eax]
  425.   0001f    50         push     eax
  426.   00020    ff 51 08     call     DWORD PTR [ecx+8]
  427.   00023    83 66 50 00     and     DWORD PTR [esi+80], 0
  428. $L56313:
  429.  
  430. ; 62   :     delete []m_rgaeAttributeTable;
  431.  
  432.   00027    ff 76 54     push     DWORD PTR [esi+84]
  433.   0002a    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  434.   0002f    59         pop     ecx
  435.   00030    5e         pop     esi
  436.  
  437. ; 63   : }
  438.  
  439.   00031    c3         ret     0
  440. ??1CStripOutline@@QAE@XZ ENDP                ; CStripOutline::~CStripOutline
  441. _TEXT    ENDS
  442. PUBLIC    ?BConnected@@YA_NPAI0@Z                ; BConnected
  443. ; Function compile flags: /Ogs
  444. ;    COMDAT ?BConnected@@YA_NPAI0@Z
  445. _TEXT    SEGMENT
  446. _pwFace1$ = 8                        ; size = 4
  447. _pwFace2$ = 12                        ; size = 4
  448. ?BConnected@@YA_NPAI0@Z PROC NEAR            ; BConnected, COMDAT
  449.  
  450. ; 88   : }
  451.  
  452.   00000    8b ff         npad     2
  453.  
  454. ; 66   : {
  455.  
  456.   00002    55         push     ebp
  457.   00003    8b ec         mov     ebp, esp
  458.   00005    56         push     esi
  459.  
  460. ; 67   :     UINT cSharedPoints;
  461. ; 68   :     UINT iPoint1;
  462. ; 69   :     UINT iPoint2;
  463. ; 70   : 
  464. ; 71   :     cSharedPoints = 0;
  465.  
  466.   00006    33 f6         xor     esi, esi
  467.   00008    57         push     edi
  468.  
  469. ; 72   :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  470.  
  471.   00009    33 d2         xor     edx, edx
  472. $L56324:
  473.  
  474. ; 73   :     {
  475. ; 74   :         for (iPoint2 = 0; iPoint2 < 3; iPoint2++)
  476. ; 75   :         {
  477. ; 76   :             if (pwFace1[iPoint1] == pwFace2[iPoint2])
  478.  
  479.   0000b    8b 45 08     mov     eax, DWORD PTR _pwFace1$[ebp]
  480.   0000e    8b 04 90     mov     eax, DWORD PTR [eax+edx*4]
  481.   00011    33 c9         xor     ecx, ecx
  482. $L56327:
  483.   00013    8b 7d 0c     mov     edi, DWORD PTR _pwFace2$[ebp]
  484.   00016    3b 04 8f     cmp     eax, DWORD PTR [edi+ecx*4]
  485.   00019    74 08         je     SHORT $L56814
  486.   0001b    41         inc     ecx
  487.   0001c    83 f9 03     cmp     ecx, 3
  488.   0001f    72 f2         jb     SHORT $L56327
  489.   00021    eb 01         jmp     SHORT $L56325
  490. $L56814:
  491.  
  492. ; 77   :             {
  493. ; 78   :                 cSharedPoints += 1;
  494.  
  495.   00023    46         inc     esi
  496. $L56325:
  497.  
  498. ; 72   :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  499.  
  500.   00024    42         inc     edx
  501.   00025    83 fa 03     cmp     edx, 3
  502.   00028    72 e1         jb     SHORT $L56324
  503.  
  504. ; 79   : 
  505. ; 80   :                 break;
  506. ; 81   :             }
  507. ; 82   :         }
  508. ; 83   :     }
  509. ; 84   : 
  510. ; 85   :     GXASSERT(cSharedPoints <= 3);
  511. ; 86   : 
  512. ; 87   :     return cSharedPoints >= 2;
  513.  
  514.   0002a    83 fe 02     cmp     esi, 2
  515.   0002d    1b c0         sbb     eax, eax
  516.   0002f    5f         pop     edi
  517.   00030    40         inc     eax
  518.   00031    5e         pop     esi
  519.  
  520. ; 88   : }
  521.  
  522.   00032    5d         pop     ebp
  523.   00033    c3         ret     0
  524. ?BConnected@@YA_NPAI0@Z ENDP                ; BConnected
  525. _TEXT    ENDS
  526. PUBLIC    ??0D3DXMATRIX@@QAE@XZ                ; D3DXMATRIX::D3DXMATRIX
  527. ; Function compile flags: /Ogs
  528. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.h
  529. ;    COMDAT ??0D3DXMATRIX@@QAE@XZ
  530. _TEXT    SEGMENT
  531. ??0D3DXMATRIX@@QAE@XZ PROC NEAR                ; D3DXMATRIX::D3DXMATRIX, COMDAT
  532. ; _this$ = ecx
  533.  
  534. ; 315  :     D3DXMATRIX() {};
  535.  
  536.   00000    8b c1         mov     eax, ecx
  537.   00002    c3         ret     0
  538. ??0D3DXMATRIX@@QAE@XZ ENDP                ; D3DXMATRIX::D3DXMATRIX
  539. _TEXT    ENDS
  540. PUBLIC    ??0D3DXVECTOR3@@QAE@MMM@Z            ; D3DXVECTOR3::D3DXVECTOR3
  541. EXTRN    __fltused:NEAR
  542. ; Function compile flags: /Ogs
  543. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  544. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  545. _TEXT    SEGMENT
  546. _fx$ = 8                        ; size = 4
  547. _fy$ = 12                        ; size = 4
  548. _fz$ = 16                        ; size = 4
  549. ??0D3DXVECTOR3@@QAE@MMM@Z PROC NEAR            ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
  550. ; _this$ = ecx
  551.  
  552. ; 308  : }
  553.  
  554.   00000    8b ff         npad     2
  555.  
  556. ; 304  : {
  557.  
  558.   00002    55         push     ebp
  559.   00003    8b ec         mov     ebp, esp
  560.   00005    8b c1         mov     eax, ecx
  561.  
  562. ; 305  :     x = fx;
  563.  
  564.   00007    8b 4d 08     mov     ecx, DWORD PTR _fx$[ebp]
  565.   0000a    89 08         mov     DWORD PTR [eax], ecx
  566.  
  567. ; 306  :     y = fy;
  568.  
  569.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fy$[ebp]
  570.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  571.  
  572. ; 307  :     z = fz;
  573.  
  574.   00012    8b 4d 10     mov     ecx, DWORD PTR _fz$[ebp]
  575.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  576.  
  577. ; 308  : }
  578.  
  579.   00018    5d         pop     ebp
  580.   00019    c2 0c 00     ret     12            ; 0000000cH
  581. ??0D3DXVECTOR3@@QAE@MMM@Z ENDP                ; D3DXVECTOR3::D3DXVECTOR3
  582. _TEXT    ENDS
  583. PUBLIC    ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z            ; D3DXVECTOR3::operator+=
  584. ; Function compile flags: /Ogs
  585. ;    COMDAT ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z
  586. _TEXT    SEGMENT
  587. _v$ = 8                            ; size = 4
  588. ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z PROC NEAR        ; D3DXVECTOR3::operator+=, COMDAT
  589. ; _this$ = ecx
  590.  
  591. ; 332  :     return *this;
  592. ; 333  : }
  593.  
  594.   00000    8b ff         npad     2
  595.  
  596. ; 328  : {
  597.  
  598.   00002    55         push     ebp
  599.   00003    8b ec         mov     ebp, esp
  600.   00005    8b c1         mov     eax, ecx
  601.  
  602. ; 329  :     x += v.x;
  603.  
  604.   00007    8b 4d 08     mov     ecx, DWORD PTR _v$[ebp]
  605.   0000a    d9 01         fld     DWORD PTR [ecx]
  606.   0000c    d8 00         fadd     DWORD PTR [eax]
  607.   0000e    d9 18         fstp     DWORD PTR [eax]
  608.  
  609. ; 330  :     y += v.y;
  610.  
  611.   00010    d9 41 04     fld     DWORD PTR [ecx+4]
  612.   00013    d8 40 04     fadd     DWORD PTR [eax+4]
  613.   00016    d9 58 04     fstp     DWORD PTR [eax+4]
  614.  
  615. ; 331  :     z += v.z;
  616.  
  617.   00019    d9 41 08     fld     DWORD PTR [ecx+8]
  618.   0001c    d8 40 08     fadd     DWORD PTR [eax+8]
  619.   0001f    d9 58 08     fstp     DWORD PTR [eax+8]
  620.  
  621. ; 332  :     return *this;
  622. ; 333  : }
  623.  
  624.   00022    5d         pop     ebp
  625.   00023    c2 04 00     ret     4
  626. ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z ENDP            ; D3DXVECTOR3::operator+=
  627. _TEXT    ENDS
  628. PUBLIC    ??_0D3DXVECTOR3@@QAEAAU0@M@Z            ; D3DXVECTOR3::operator/=
  629. ; Function compile flags: /Ogs
  630. ;    COMDAT ??_0D3DXVECTOR3@@QAEAAU0@M@Z
  631. _TEXT    SEGMENT
  632. _f$ = 8                            ; size = 4
  633. ??_0D3DXVECTOR3@@QAEAAU0@M@Z PROC NEAR            ; D3DXVECTOR3::operator/=, COMDAT
  634. ; _this$ = ecx
  635.  
  636. ; 360  :     return *this;
  637. ; 361  : }
  638.  
  639.   00000    8b ff         npad     2
  640.  
  641. ; 355  : {
  642.  
  643.   00002    55         push     ebp
  644.   00003    8b ec         mov     ebp, esp
  645.  
  646. ; 356  :     FLOAT fInv = 1.0f / f;
  647.  
  648.   00005    d9 e8         fld1
  649.   00007    8b c1         mov     eax, ecx
  650.   00009    d8 75 08     fdiv     DWORD PTR _f$[ebp]
  651.  
  652. ; 357  :     x *= fInv;
  653.  
  654.   0000c    d9 c0         fld     ST(0)
  655.   0000e    d8 08         fmul     DWORD PTR [eax]
  656.   00010    d9 18         fstp     DWORD PTR [eax]
  657.  
  658. ; 358  :     y *= fInv;
  659.  
  660.   00012    d9 c0         fld     ST(0)
  661.   00014    d8 48 04     fmul     DWORD PTR [eax+4]
  662.   00017    d9 58 04     fstp     DWORD PTR [eax+4]
  663.  
  664. ; 359  :     z *= fInv;
  665.  
  666.   0001a    d8 48 08     fmul     DWORD PTR [eax+8]
  667.   0001d    d9 58 08     fstp     DWORD PTR [eax+8]
  668.  
  669. ; 360  :     return *this;
  670. ; 361  : }
  671.  
  672.   00020    5d         pop     ebp
  673.   00021    c2 04 00     ret     4
  674. ??_0D3DXVECTOR3@@QAEAAU0@M@Z ENDP            ; D3DXVECTOR3::operator/=
  675. _TEXT    ENDS
  676. PUBLIC    ?CreateEmptyOutline@CStripOutline@@AAEJXZ    ; CStripOutline::CreateEmptyOutline
  677. ; Function compile flags: /Ogs
  678. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\stripoutline.cpp
  679. ;    COMDAT ?CreateEmptyOutline@CStripOutline@@AAEJXZ
  680. _TEXT    SEGMENT
  681. ?CreateEmptyOutline@CStripOutline@@AAEJXZ PROC NEAR    ; CStripOutline::CreateEmptyOutline, COMDAT
  682. ; _this$ = ecx
  683.  
  684. ; 919  : }
  685.  
  686.   00000    8b ff         npad     2
  687.   00002    56         push     esi
  688.  
  689. ; 908  : {
  690.  
  691.   00003    8b f1         mov     esi, ecx
  692.  
  693. ; 909  :     GXRELEASE(m_pVertexBuffer);
  694.  
  695.   00005    8b 46 4c     mov     eax, DWORD PTR [esi+76]
  696.   00008    57         push     edi
  697.   00009    33 ff         xor     edi, edi
  698.   0000b    3b c7         cmp     eax, edi
  699.   0000d    74 09         je     SHORT $L56734
  700.   0000f    8b 08         mov     ecx, DWORD PTR [eax]
  701.   00011    50         push     eax
  702.   00012    ff 51 08     call     DWORD PTR [ecx+8]
  703.   00015    89 7e 4c     mov     DWORD PTR [esi+76], edi
  704. $L56734:
  705.  
  706. ; 910  :     m_caeAttributeTable = 0;
  707. ; 911  :     delete []m_rgaeAttributeTable;
  708.  
  709.   00018    ff 76 54     push     DWORD PTR [esi+84]
  710.   0001b    89 7e 58     mov     DWORD PTR [esi+88], edi
  711.   0001e    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  712.   00023    59         pop     ecx
  713.  
  714. ; 912  :     m_rgaeAttributeTable = NULL;
  715.  
  716.   00024    89 7e 54     mov     DWORD PTR [esi+84], edi
  717.  
  718. ; 913  : 
  719. ; 914  :     m_cLines = 0;
  720.  
  721.   00027    89 7e 5c     mov     DWORD PTR [esi+92], edi
  722.  
  723. ; 915  :     m_cVertices = 0;
  724.  
  725.   0002a    89 7e 60     mov     DWORD PTR [esi+96], edi
  726.  
  727. ; 916  :     m_bSkinning = FALSE;
  728.  
  729.   0002d    89 7e 40     mov     DWORD PTR [esi+64], edi
  730.   00030    5f         pop     edi
  731.  
  732. ; 917  : 
  733. ; 918  :     return S_OK;
  734.  
  735.   00031    33 c0         xor     eax, eax
  736.   00033    5e         pop     esi
  737.  
  738. ; 919  : }
  739.  
  740.   00034    c3         ret     0
  741. ?CreateEmptyOutline@CStripOutline@@AAEJXZ ENDP        ; CStripOutline::CreateEmptyOutline
  742. _TEXT    ENDS
  743. PUBLIC    __real@3b808081
  744. PUBLIC    ??0D3DXCOLOR@@QAE@K@Z                ; D3DXCOLOR::D3DXCOLOR
  745. ;    COMDAT __real@3b808081
  746. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  747. CONST    SEGMENT
  748. __real@3b808081 DD 03b808081r            ; 0.00392157
  749. ; Function compile flags: /Ogs
  750. CONST    ENDS
  751. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  752. _TEXT    SEGMENT
  753. tv186 = 8                        ; size = 4
  754. tv185 = 8                        ; size = 4
  755. tv184 = 8                        ; size = 4
  756. tv183 = 8                        ; size = 4
  757. _dw$ = 8                        ; size = 4
  758. ??0D3DXCOLOR@@QAE@K@Z PROC NEAR                ; D3DXCOLOR::D3DXCOLOR, COMDAT
  759. ; _this$ = ecx
  760.  
  761. ; 1352 : }
  762.  
  763.   00000    8b ff         npad     2
  764.  
  765. ; 1346 : {
  766.  
  767.   00002    55         push     ebp
  768.   00003    8b ec         mov     ebp, esp
  769.  
  770. ; 1347 :     CONST FLOAT f = 1.0f / 255.0f;
  771. ; 1348 :     r = f * (FLOAT) (unsigned char) (dw >> 16);
  772.  
  773.   00005    d9 05 00 00 00
  774.     00         fld     DWORD PTR __real@3b808081
  775.   0000b    8b c1         mov     eax, ecx
  776.   0000d    8b 4d 08     mov     ecx, DWORD PTR _dw$[ebp]
  777.   00010    8b d1         mov     edx, ecx
  778.   00012    c1 ea 10     shr     edx, 16            ; 00000010H
  779.   00015    0f b6 d2     movzx     edx, dl
  780.   00018    89 55 08     mov     DWORD PTR tv186[ebp], edx
  781.  
  782. ; 1349 :     g = f * (FLOAT) (unsigned char) (dw >>  8);
  783.  
  784.   0001b    8b d1         mov     edx, ecx
  785.   0001d    c1 ea 08     shr     edx, 8
  786.   00020    db 45 08     fild     DWORD PTR tv186[ebp]
  787.   00023    0f b6 d2     movzx     edx, dl
  788.   00026    d8 c9         fmul     ST(0), ST(1)
  789.   00028    89 55 08     mov     DWORD PTR tv185[ebp], edx
  790.  
  791. ; 1350 :     b = f * (FLOAT) (unsigned char) (dw >>  0);
  792.  
  793.   0002b    0f b6 d1     movzx     edx, cl
  794.   0002e    d9 18         fstp     DWORD PTR [eax]
  795.   00030    db 45 08     fild     DWORD PTR tv185[ebp]
  796.   00033    89 55 08     mov     DWORD PTR tv184[ebp], edx
  797.  
  798. ; 1351 :     a = f * (FLOAT) (unsigned char) (dw >> 24);
  799.  
  800.   00036    c1 e9 18     shr     ecx, 24            ; 00000018H
  801.   00039    d8 c9         fmul     ST(0), ST(1)
  802.   0003b    d9 58 04     fstp     DWORD PTR [eax+4]
  803.   0003e    db 45 08     fild     DWORD PTR tv184[ebp]
  804.   00041    89 4d 08     mov     DWORD PTR tv183[ebp], ecx
  805.   00044    d8 c9         fmul     ST(0), ST(1)
  806.   00046    d9 58 08     fstp     DWORD PTR [eax+8]
  807.   00049    db 45 08     fild     DWORD PTR tv183[ebp]
  808.   0004c    d8 c9         fmul     ST(0), ST(1)
  809.   0004e    d9 58 0c     fstp     DWORD PTR [eax+12]
  810.   00051    dd d8         fstp     ST(0)
  811.  
  812. ; 1352 : }
  813.  
  814.   00053    5d         pop     ebp
  815.   00054    c2 04 00     ret     4
  816. ??0D3DXCOLOR@@QAE@K@Z ENDP                ; D3DXCOLOR::D3DXCOLOR
  817. _TEXT    ENDS
  818. PUBLIC    ?CWeights@DXCrackFVF@@QAEKXZ            ; DXCrackFVF::CWeights
  819. ; Function compile flags: /Ogs
  820. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  821. ;    COMDAT ?CWeights@DXCrackFVF@@QAEKXZ
  822. _TEXT    SEGMENT
  823. ?CWeights@DXCrackFVF@@QAEKXZ PROC NEAR            ; DXCrackFVF::CWeights, COMDAT
  824. ; _this$ = ecx
  825.  
  826. ; 76   :     inline DWORD        CWeights()      { return m_cWeights; }
  827.  
  828.   00000    8b 41 38     mov     eax, DWORD PTR [ecx+56]
  829.   00003    c3         ret     0
  830. ?CWeights@DXCrackFVF@@QAEKXZ ENDP            ; DXCrackFVF::CWeights
  831. _TEXT    ENDS
  832. PUBLIC    ??0DXCrackFVF@@QAE@K@Z                ; DXCrackFVF::DXCrackFVF
  833. ; Function compile flags: /Ogs
  834. ;    COMDAT ??0DXCrackFVF@@QAE@K@Z
  835. _TEXT    SEGMENT
  836. _dwFVF$ = 8                        ; size = 4
  837. ??0DXCrackFVF@@QAE@K@Z PROC NEAR            ; DXCrackFVF::DXCrackFVF, COMDAT
  838. ; _this$ = ecx
  839.  
  840. ; 192  : }
  841.  
  842.   00000    8b ff         npad     2
  843.  
  844. ; 115  : {
  845.  
  846.   00002    55         push     ebp
  847.   00003    8b ec         mov     ebp, esp
  848.   00005    8b c1         mov     eax, ecx
  849.   00007    53         push     ebx
  850.   00008    8b 5d 08     mov     ebx, DWORD PTR _dwFVF$[ebp]
  851.   0000b    56         push     esi
  852.  
  853. ; 116  :     DWORD oCur = 0;
  854. ; 117  :     DWORD dwPosition;
  855. ; 118  :     DWORD dwTexCoordInfo;
  856. ; 119  :     DWORD iTexCoord;
  857. ; 120  :     DWORD dwTexCoordSize;
  858. ; 121  :     m_oTex[0] = 0;
  859. ; 122  : 
  860. ; 123  :     dwPosition = dwFVF & D3DFVF_POSITION_MASK;
  861.  
  862.   0000c    8b d3         mov     edx, ebx
  863.   0000e    57         push     edi
  864.   0000f    33 ff         xor     edi, edi
  865.   00011    81 e2 0e 40 00
  866.     00         and     edx, 16398        ; 0000400eH
  867.   00017    33 c9         xor     ecx, ecx
  868.  
  869. ; 124  : 
  870. ; 125  :     if (dwPosition == D3DFVF_XYZ)
  871.  
  872.   00019    83 fa 02     cmp     edx, 2
  873.   0001c    8d 70 18     lea     esi, DWORD PTR [eax+24]
  874.   0001f    89 18         mov     DWORD PTR [eax], ebx
  875.   00021    89 78 08     mov     DWORD PTR [eax+8], edi
  876.   00024    89 78 0c     mov     DWORD PTR [eax+12], edi
  877.   00027    89 78 10     mov     DWORD PTR [eax+16], edi
  878.   0002a    89 78 14     mov     DWORD PTR [eax+20], edi
  879.   0002d    89 78 38     mov     DWORD PTR [eax+56], edi
  880.   00030    89 78 3c     mov     DWORD PTR [eax+60], edi
  881.   00033    89 3e         mov     DWORD PTR [esi], edi
  882.   00035    75 05         jne     SHORT $L55539
  883.  
  884. ; 126  :     {
  885. ; 127  :         oCur += 3 * sizeof(float);
  886.  
  887.   00037    6a 0c         push     12            ; 0000000cH
  888. $L56837:
  889.   00039    59         pop     ecx
  890.  
  891. ; 128  :     }
  892. ; 129  :     else if (dwPosition == D3DFVF_XYZRHW)
  893.  
  894.   0003a    eb 1d         jmp     SHORT $L56834
  895. $L55539:
  896.   0003c    83 fa 04     cmp     edx, 4
  897.   0003f    75 04         jne     SHORT $L55542
  898.  
  899. ; 130  :     {
  900. ; 131  :         oCur += 4 * sizeof(float);
  901.  
  902.   00041    6a 10         push     16            ; 00000010H
  903.  
  904. ; 132  :     }
  905. ; 133  :     else if (dwPosition >= D3DFVF_XYZB1)
  906.  
  907.   00043    eb f4         jmp     SHORT $L56837
  908. $L55542:
  909.   00045    83 fa 06     cmp     edx, 6
  910.   00048    72 0f         jb     SHORT $L56834
  911.  
  912. ; 134  :     {
  913. ; 135  :         m_cWeights = (dwPosition >> 1) - 2;
  914.  
  915.   0004a    d1 ea         shr     edx, 1
  916.   0004c    8d 4a fe     lea     ecx, DWORD PTR [edx-2]
  917.   0004f    89 48 38     mov     DWORD PTR [eax+56], ecx
  918.  
  919. ; 136  :         oCur += (3 + m_cWeights) * sizeof(float);
  920.  
  921.   00052    8d 0c 8d 0c 00
  922.     00 00         lea     ecx, DWORD PTR [ecx*4+12]
  923. $L56834:
  924.  
  925. ; 137  :     }
  926. ; 138  : 
  927. ; 139  :     if ( dwFVF & D3DFVF_NORMAL )
  928.  
  929.   00059    f6 c3 10     test     bl, 16            ; 00000010H
  930.   0005c    74 06         je     SHORT $L55547
  931.  
  932. ; 140  :     {
  933. ; 141  :         m_oNormal = oCur;
  934.  
  935.   0005e    89 48 08     mov     DWORD PTR [eax+8], ecx
  936.  
  937. ; 142  :         oCur += 3 * sizeof(float);
  938.  
  939.   00061    83 c1 0c     add     ecx, 12            ; 0000000cH
  940. $L55547:
  941.  
  942. ; 143  :     }
  943. ; 144  : 
  944. ; 145  :     if ( dwFVF & D3DFVF_PSIZE )
  945.  
  946.   00064    f6 c3 20     test     bl, 32            ; 00000020H
  947.   00067    74 06         je     SHORT $L56835
  948.  
  949. ; 146  :     {
  950. ; 147  :         m_oPointSize = oCur;
  951.  
  952.   00069    89 48 0c     mov     DWORD PTR [eax+12], ecx
  953.  
  954. ; 148  :         oCur += sizeof(float);
  955.  
  956.   0006c    83 c1 04     add     ecx, 4
  957. $L56835:
  958.  
  959. ; 149  :     }
  960. ; 150  : 
  961. ; 151  :     if ( dwFVF & D3DFVF_DIFFUSE )
  962.  
  963.   0006f    f6 c3 40     test     bl, 64            ; 00000040H
  964.   00072    74 06         je     SHORT $L56836
  965.  
  966. ; 152  :     {
  967. ; 153  :         m_oDiffuse = oCur;
  968.  
  969.   00074    89 48 10     mov     DWORD PTR [eax+16], ecx
  970.  
  971. ; 154  :         oCur += sizeof(D3DCOLOR);
  972.  
  973.   00077    83 c1 04     add     ecx, 4
  974. $L56836:
  975.  
  976. ; 155  :     }
  977. ; 156  : 
  978. ; 157  :     if ( dwFVF & D3DFVF_SPECULAR )
  979.  
  980.   0007a    84 db         test     bl, bl
  981.   0007c    79 06         jns     SHORT $L55553
  982.  
  983. ; 158  :     {
  984. ; 159  :         m_oSpecular = oCur;
  985.  
  986.   0007e    89 48 14     mov     DWORD PTR [eax+20], ecx
  987.  
  988. ; 160  :         oCur += sizeof(D3DCOLOR);
  989.  
  990.   00081    83 c1 04     add     ecx, 4
  991. $L55553:
  992.  
  993. ; 161  :     }
  994. ; 162  : 
  995. ; 163  :     if ( dwFVF & D3DFVF_TEXCOUNT_MASK )
  996.  
  997.   00084    f6 c7 0f     test     bh, 15            ; 0000000fH
  998.   00087    74 3d         je     SHORT $L55559
  999.  
  1000. ; 164  :     {
  1001. ; 165  :         m_oTex[0] = oCur;
  1002. ; 166  : 
  1003. ; 167  :         // only one tu/tv set currently supported
  1004. ; 168  : 
  1005. ; 169  :         m_cTexCoords = ((dwFVF & D3DFVF_TEXCOUNT_MASK)>>D3DFVF_TEXCOUNT_SHIFT);
  1006.  
  1007.   00089    8b d3         mov     edx, ebx
  1008.   0008b    c1 ea 08     shr     edx, 8
  1009.   0008e    83 e2 0f     and     edx, 15            ; 0000000fH
  1010.  
  1011. ; 170  : 
  1012. ; 171  :         if(m_cTexCoords > 8)
  1013.  
  1014.   00091    83 fa 08     cmp     edx, 8
  1015.   00094    89 0e         mov     DWORD PTR [esi], ecx
  1016.   00096    89 50 3c     mov     DWORD PTR [eax+60], edx
  1017.   00099    76 07         jbe     SHORT $L55556
  1018.  
  1019. ; 172  :             m_cTexCoords = 8;
  1020.  
  1021.   0009b    c7 40 3c 08 00
  1022.     00 00         mov     DWORD PTR [eax+60], 8
  1023. $L55556:
  1024.  
  1025. ; 173  : 
  1026. ; 174  :         // all 2d, then go quick route
  1027. ; 175  :         //if ((dwFVF & 0xffff0000) == 0)
  1028. ; 176  :         //{
  1029. ; 177  :             //oCur += sizeof(float) * 2 * m_cTexCoords;
  1030. ; 178  :         //}
  1031. ; 179  :         //else
  1032. ; 180  :         {
  1033. ; 181  :             dwTexCoordSize = (dwFVF & 0xffff0000) >> 16;
  1034.  
  1035.   000a2    c1 eb 10     shr     ebx, 16            ; 00000010H
  1036.  
  1037. ; 182  :             for (iTexCoord = 0; iTexCoord < m_cTexCoords; iTexCoord++)
  1038.  
  1039.   000a5    33 d2         xor     edx, edx
  1040.   000a7    39 78 3c     cmp     DWORD PTR [eax+60], edi
  1041.   000aa    76 1a         jbe     SHORT $L55559
  1042. $L55557:
  1043.  
  1044. ; 183  :             {
  1045. ; 184  :                 m_oTex[iTexCoord] = oCur;
  1046. ; 185  :                 oCur += x_rgdwTexCoordSize[dwTexCoordSize & 0x3];
  1047.  
  1048.   000ac    8b fb         mov     edi, ebx
  1049.   000ae    83 e7 03     and     edi, 3
  1050.   000b1    89 0e         mov     DWORD PTR [esi], ecx
  1051.   000b3    03 0c bd 00 00
  1052.     00 00         add     ecx, DWORD PTR _x_rgdwTexCoordSize[edi*4]
  1053.  
  1054. ; 186  :                 dwTexCoordSize = dwTexCoordSize >> 2;
  1055.  
  1056.   000ba    c1 eb 02     shr     ebx, 2
  1057.   000bd    42         inc     edx
  1058.   000be    83 c6 04     add     esi, 4
  1059.   000c1    3b 50 3c     cmp     edx, DWORD PTR [eax+60]
  1060.   000c4    72 e6         jb     SHORT $L55557
  1061. $L55559:
  1062.   000c6    5f         pop     edi
  1063.   000c7    5e         pop     esi
  1064.  
  1065. ; 187  :             }
  1066. ; 188  :         }
  1067. ; 189  :     }
  1068. ; 190  : 
  1069. ; 191  :     m_cBytesPerVertex = oCur;
  1070.  
  1071.   000c8    89 48 04     mov     DWORD PTR [eax+4], ecx
  1072.   000cb    5b         pop     ebx
  1073.  
  1074. ; 192  : }
  1075.  
  1076.   000cc    5d         pop     ebp
  1077.   000cd    c2 04 00     ret     4
  1078. ??0DXCrackFVF@@QAE@K@Z ENDP                ; DXCrackFVF::DXCrackFVF
  1079. _TEXT    ENDS
  1080. PUBLIC    ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z        ; DXCrackFVF::GetArrayElem
  1081. ; Function compile flags: /Ogs
  1082. ;    COMDAT ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z
  1083. _TEXT    SEGMENT
  1084. _pvPoints$ = 8                        ; size = 4
  1085. _iElem$ = 12                        ; size = 4
  1086. ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z PROC NEAR    ; DXCrackFVF::GetArrayElem, COMDAT
  1087. ; _this$ = ecx
  1088.  
  1089. ; 202  : }
  1090.  
  1091.   00000    8b ff         npad     2
  1092.  
  1093. ; 200  : { 
  1094.  
  1095.   00002    55         push     ebp
  1096.   00003    8b ec         mov     ebp, esp
  1097.  
  1098. ; 201  :     return ((PBYTE)pvPoints + (iElem * m_cBytesPerVertex)); 
  1099.  
  1100.   00005    8b 41 04     mov     eax, DWORD PTR [ecx+4]
  1101.   00008    0f af 45 0c     imul     eax, DWORD PTR _iElem$[ebp]
  1102.   0000c    03 45 08     add     eax, DWORD PTR _pvPoints$[ebp]
  1103.  
  1104. ; 202  : }
  1105.  
  1106.   0000f    5d         pop     ebp
  1107.   00010    c2 08 00     ret     8
  1108. ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z ENDP        ; DXCrackFVF::GetArrayElem
  1109. _TEXT    ENDS
  1110. PUBLIC    ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetPosition
  1111. ; Function compile flags: /Ogs
  1112. ;    COMDAT ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  1113. _TEXT    SEGMENT
  1114. _pvPoint$ = 8                        ; size = 4
  1115. _pvPos$ = 12                        ; size = 4
  1116. ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z PROC NEAR ; DXCrackFVF::SetPosition, COMDAT
  1117. ; _this$ = ecx
  1118.  
  1119. ; 211  : }
  1120.  
  1121.   00000    8b ff         npad     2
  1122.  
  1123. ; 209  : {
  1124.  
  1125.   00002    55         push     ebp
  1126.   00003    8b ec         mov     ebp, esp
  1127.   00005    56         push     esi
  1128.  
  1129. ; 210  :     memcpy(pvPoint, pvPos, sizeof(D3DXVECTOR3));
  1130.  
  1131.   00006    8b 75 0c     mov     esi, DWORD PTR _pvPos$[ebp]
  1132.   00009    57         push     edi
  1133.   0000a    8b 7d 08     mov     edi, DWORD PTR _pvPoint$[ebp]
  1134.   0000d    a5         movsd
  1135.   0000e    a5         movsd
  1136.   0000f    a5         movsd
  1137.   00010    5f         pop     edi
  1138.   00011    5e         pop     esi
  1139.  
  1140. ; 211  : }
  1141.  
  1142.   00012    5d         pop     ebp
  1143.   00013    c2 08 00     ret     8
  1144. ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ENDP    ; DXCrackFVF::SetPosition
  1145. _TEXT    ENDS
  1146. PUBLIC    ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  1147. ; Function compile flags: /Ogs
  1148. ;    COMDAT ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z
  1149. _TEXT    SEGMENT
  1150. _pvPoint$ = 8                        ; size = 4
  1151. _iTexCoord$ = 12                    ; size = 4
  1152. _pvTexCoord$ = 16                    ; size = 4
  1153. ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z PROC NEAR ; DXCrackFVF::SetTexCoord, COMDAT
  1154. ; _this$ = ecx
  1155.  
  1156. ; 296  :     }
  1157. ; 297  : }
  1158.  
  1159.   00000    8b ff         npad     2
  1160.  
  1161. ; 292  : {
  1162.  
  1163.   00002    55         push     ebp
  1164.   00003    8b ec         mov     ebp, esp
  1165.  
  1166. ; 293  :     if (iTexCoord < m_cTexCoords)
  1167.  
  1168.   00005    8b 45 0c     mov     eax, DWORD PTR _iTexCoord$[ebp]
  1169.   00008    3b 41 3c     cmp     eax, DWORD PTR [ecx+60]
  1170.   0000b    73 11         jae     SHORT $L55627
  1171.   0000d    56         push     esi
  1172.  
  1173. ; 294  :     {
  1174. ; 295  :         memcpy(((PBYTE)pvPoint) + m_oTex[iTexCoord], pvTexCoord, sizeof(D3DXVECTOR3));
  1175.  
  1176.   0000e    8b 75 10     mov     esi, DWORD PTR _pvTexCoord$[ebp]
  1177.   00011    57         push     edi
  1178.   00012    8b 7c 81 18     mov     edi, DWORD PTR [ecx+eax*4+24]
  1179.   00016    03 7d 08     add     edi, DWORD PTR _pvPoint$[ebp]
  1180.   00019    a5         movsd
  1181.   0001a    a5         movsd
  1182.   0001b    a5         movsd
  1183.   0001c    5f         pop     edi
  1184.   0001d    5e         pop     esi
  1185. $L55627:
  1186.  
  1187. ; 296  :     }
  1188. ; 297  : }
  1189.  
  1190.   0001e    5d         pop     ebp
  1191.   0001f    c2 0c 00     ret     12            ; 0000000cH
  1192. ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ENDP ; DXCrackFVF::SetTexCoord
  1193. _TEXT    ENDS
  1194. PUBLIC    ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z ; DXCrackFVF::PxyzwGetTexCoord
  1195. ; Function compile flags: /Ogs
  1196. ;    COMDAT ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z
  1197. _TEXT    SEGMENT
  1198. _pvPoint$ = 8                        ; size = 4
  1199. _index$ = 12                        ; size = 4
  1200. ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z PROC NEAR ; DXCrackFVF::PxyzwGetTexCoord, COMDAT
  1201. ; _this$ = ecx
  1202.  
  1203. ; 446  : }
  1204.  
  1205.   00000    8b ff         npad     2
  1206.  
  1207. ; 444  : {
  1208.  
  1209.   00002    55         push     ebp
  1210.   00003    8b ec         mov     ebp, esp
  1211.  
  1212. ; 445  :     return (D3DXVECTOR4*) (((PBYTE)pvPoint) + m_oTex[index]);
  1213.  
  1214.   00005    8b 45 0c     mov     eax, DWORD PTR _index$[ebp]
  1215.   00008    8b 44 81 18     mov     eax, DWORD PTR [ecx+eax*4+24]
  1216.   0000c    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1217.  
  1218. ; 446  : }
  1219.  
  1220.   0000f    5d         pop     ebp
  1221.   00010    c2 08 00     ret     8
  1222. ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z ENDP ; DXCrackFVF::PxyzwGetTexCoord
  1223. _TEXT    ENDS
  1224. PUBLIC    ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z        ; DXCrackFVF::PfGetWeights
  1225. ; Function compile flags: /Ogs
  1226. ;    COMDAT ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z
  1227. _TEXT    SEGMENT
  1228. _pvPoint$ = 8                        ; size = 4
  1229. ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z PROC NEAR        ; DXCrackFVF::PfGetWeights, COMDAT
  1230. ; _this$ = ecx
  1231.  
  1232. ; 455  : }
  1233.  
  1234.   00000    8b ff         npad     2
  1235.  
  1236. ; 453  : {
  1237.  
  1238.   00002    55         push     ebp
  1239.   00003    8b ec         mov     ebp, esp
  1240.  
  1241. ; 454  :     return (float*)(((PBYTE)pvPoint) + sizeof(D3DXVECTOR3));
  1242.  
  1243.   00005    8b 45 08     mov     eax, DWORD PTR _pvPoint$[ebp]
  1244.   00008    83 c0 0c     add     eax, 12            ; 0000000cH
  1245.  
  1246. ; 455  : }
  1247.  
  1248.   0000b    5d         pop     ebp
  1249.   0000c    c2 04 00     ret     4
  1250. ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z ENDP        ; DXCrackFVF::PfGetWeights
  1251. _TEXT    ENDS
  1252. PUBLIC    ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ    ; CD3DXCrackDecl1::BIndexedWeights
  1253. ; Function compile flags: /Ogs
  1254. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\crackdecl.h
  1255. ;    COMDAT ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ
  1256. _TEXT    SEGMENT
  1257. ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ PROC NEAR    ; CD3DXCrackDecl1::BIndexedWeights, COMDAT
  1258. ; _this$ = ecx
  1259.  
  1260. ; 184  :     BOOL BIndexedWeights()                           { return pIndexElement != NULL; }
  1261.  
  1262.   00000    33 c0         xor     eax, eax
  1263.   00002    39 81 90 00 00
  1264.     00         cmp     DWORD PTR [ecx+144], eax
  1265.   00008    0f 95 c0     setne     al
  1266.   0000b    c3         ret     0
  1267. ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ ENDP        ; CD3DXCrackDecl1::BIndexedWeights
  1268. _TEXT    ENDS
  1269. PUBLIC    ?CWeights@CD3DXCrackDecl1@@QAEHXZ        ; CD3DXCrackDecl1::CWeights
  1270. ; Function compile flags: /Ogs
  1271. ;    COMDAT ?CWeights@CD3DXCrackDecl1@@QAEHXZ
  1272. _TEXT    SEGMENT
  1273. ?CWeights@CD3DXCrackDecl1@@QAEHXZ PROC NEAR        ; CD3DXCrackDecl1::CWeights, COMDAT
  1274. ; _this$ = ecx
  1275.  
  1276. ; 190  :     BOOL CWeights()                                  { return pWeightElement == NULL ? 0 : (pWeightElement->Type - D3DDECLTYPE_FLOAT1) + 1; }
  1277.  
  1278.   00000    8b 81 8c 00 00
  1279.     00         mov     eax, DWORD PTR [ecx+140]
  1280.   00006    85 c0         test     eax, eax
  1281.   00008    75 01         jne     SHORT $L56846
  1282.   0000a    c3         ret     0
  1283. $L56846:
  1284.   0000b    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  1285.   0000f    40         inc     eax
  1286.   00010    c3         ret     0
  1287. ?CWeights@CD3DXCrackDecl1@@QAEHXZ ENDP            ; CD3DXCrackDecl1::CWeights
  1288. _TEXT    ENDS
  1289. PUBLIC    ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ; CD3DXCrackDecl1::PvGetPosition
  1290. ; Function compile flags: /Ogs
  1291. ;    COMDAT ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  1292. _TEXT    SEGMENT
  1293. _pvPoint$ = 8                        ; size = 4
  1294. ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z PROC NEAR ; CD3DXCrackDecl1::PvGetPosition, COMDAT
  1295. ; _this$ = ecx
  1296.  
  1297. ; 192  :     LPD3DXVECTOR3 PvGetPosition(PBYTE pvPoint)       { return (LPD3DXVECTOR3)(pvPoint + pPositionElement->Offset); }
  1298.  
  1299.   00000    8b ff         npad     2
  1300.   00002    55         push     ebp
  1301.   00003    8b ec         mov     ebp, esp
  1302.   00005    8b 81 88 00 00
  1303.     00         mov     eax, DWORD PTR [ecx+136]
  1304.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1305.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1306.   00012    5d         pop     ebp
  1307.   00013    c2 04 00     ret     4
  1308. ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ENDP ; CD3DXCrackDecl1::PvGetPosition
  1309. _TEXT    ENDS
  1310. PUBLIC    ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z    ; CD3DXCrackDecl1::PfGetWeights
  1311. ; Function compile flags: /Ogs
  1312. ;    COMDAT ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z
  1313. _TEXT    SEGMENT
  1314. _pvPoint$ = 8                        ; size = 4
  1315. ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z PROC NEAR    ; CD3DXCrackDecl1::PfGetWeights, COMDAT
  1316. ; _this$ = ecx
  1317.  
  1318. ; 194  :     FLOAT *PfGetWeights(PBYTE pvPoint)               { return (FLOAT*)(pvPoint + pWeightElement->Offset); }
  1319.  
  1320.   00000    8b ff         npad     2
  1321.   00002    55         push     ebp
  1322.   00003    8b ec         mov     ebp, esp
  1323.   00005    8b 81 8c 00 00
  1324.     00         mov     eax, DWORD PTR [ecx+140]
  1325.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1326.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1327.   00012    5d         pop     ebp
  1328.   00013    c2 04 00     ret     4
  1329. ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z ENDP        ; CD3DXCrackDecl1::PfGetWeights
  1330. _TEXT    ENDS
  1331. PUBLIC    ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z    ; CD3DXCrackDecl1::GetArrayElem
  1332. ; Function compile flags: /Ogs
  1333. ;    COMDAT ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z
  1334. _TEXT    SEGMENT
  1335. _pvPoints$ = 8                        ; size = 4
  1336. _iVertex$ = 12                        ; size = 4
  1337. ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z PROC NEAR    ; CD3DXCrackDecl1::GetArrayElem, COMDAT
  1338. ; _this$ = ecx
  1339.  
  1340. ; 223  :     PBYTE GetArrayElem(PBYTE pvPoints, UINT iVertex) { return pvPoints + m_cBytesPerVertex * iVertex; }
  1341.  
  1342.   00000    8b ff         npad     2
  1343.   00002    55         push     ebp
  1344.   00003    8b ec         mov     ebp, esp
  1345.   00005    8b 81 c0 00 00
  1346.     00         mov     eax, DWORD PTR [ecx+192]
  1347.   0000b    0f af 45 0c     imul     eax, DWORD PTR _iVertex$[ebp]
  1348.   0000f    03 45 08     add     eax, DWORD PTR _pvPoints$[ebp]
  1349.   00012    5d         pop     ebp
  1350.   00013    c2 08 00     ret     8
  1351. ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z ENDP    ; CD3DXCrackDecl1::GetArrayElem
  1352. _TEXT    ENDS
  1353. PUBLIC    ??0CD3DXCrackDecl1@@QAE@XZ            ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1354. EXTRN    ??0CD3DXCrackDecl@@QAE@XZ:NEAR            ; CD3DXCrackDecl::CD3DXCrackDecl
  1355. ; Function compile flags: /Ogs
  1356. ;    COMDAT ??0CD3DXCrackDecl1@@QAE@XZ
  1357. _TEXT    SEGMENT
  1358. ??0CD3DXCrackDecl1@@QAE@XZ PROC NEAR            ; CD3DXCrackDecl1::CD3DXCrackDecl1, COMDAT
  1359. ; _this$ = ecx
  1360.  
  1361. ; 254  :         }
  1362.  
  1363.   00000    8b ff         npad     2
  1364.   00002    56         push     esi
  1365.   00003    57         push     edi
  1366.  
  1367. ; 252  :         {
  1368.  
  1369.   00004    8b f1         mov     esi, ecx
  1370.   00006    e8 00 00 00 00     call     ??0CD3DXCrackDecl@@QAE@XZ ; CD3DXCrackDecl::CD3DXCrackDecl
  1371.   0000b    33 c0         xor     eax, eax
  1372.  
  1373. ; 253  :         memset(rgpTextureElements, 0, sizeof(LPD3DVERTEXELEMENT9) * 8);
  1374.  
  1375.   0000d    6a 08         push     8
  1376.   0000f    59         pop     ecx
  1377.   00010    89 86 88 00 00
  1378.     00         mov     DWORD PTR [esi+136], eax
  1379.   00016    89 86 8c 00 00
  1380.     00         mov     DWORD PTR [esi+140], eax
  1381.   0001c    89 86 90 00 00
  1382.     00         mov     DWORD PTR [esi+144], eax
  1383.   00022    89 86 94 00 00
  1384.     00         mov     DWORD PTR [esi+148], eax
  1385.   00028    89 86 98 00 00
  1386.     00         mov     DWORD PTR [esi+152], eax
  1387.   0002e    89 86 9c 00 00
  1388.     00         mov     DWORD PTR [esi+156], eax
  1389.   00034    8d be a0 00 00
  1390.     00         lea     edi, DWORD PTR [esi+160]
  1391.   0003a    f3 ab         rep stosd
  1392.   0003c    5f         pop     edi
  1393.  
  1394. ; 254  :         }
  1395.  
  1396.   0003d    8b c6         mov     eax, esi
  1397.   0003f    5e         pop     esi
  1398.   00040    c3         ret     0
  1399. ??0CD3DXCrackDecl1@@QAE@XZ ENDP                ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1400. _TEXT    ENDS
  1401. PUBLIC    ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl1::SetDeclaration
  1402. EXTRN    _D3DXGetDeclVertexSize@8:NEAR
  1403. EXTRN    ?SetDeclaration@CD3DXCrackDecl@@QAEJPBU_D3DVERTEXELEMENT9@@@Z:NEAR ; CD3DXCrackDecl::SetDeclaration
  1404. ; Function compile flags: /Ogs
  1405. ;    COMDAT ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z
  1406. _TEXT    SEGMENT
  1407. _pElementsNew$ = 8                    ; size = 4
  1408. ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z PROC NEAR ; CD3DXCrackDecl1::SetDeclaration, COMDAT
  1409. ; _this$ = ecx
  1410.  
  1411. ; 355  :     }
  1412.  
  1413.   00000    8b ff         npad     2
  1414.  
  1415. ; 270  :     {
  1416.  
  1417.   00002    55         push     ebp
  1418.   00003    8b ec         mov     ebp, esp
  1419.   00005    56         push     esi
  1420.  
  1421. ; 271  :         CONST D3DVERTEXELEMENT9 *pPlace;
  1422. ; 272  : 
  1423. ; 273  :         CD3DXCrackDecl::SetDeclaration(pElementsNew);
  1424.  
  1425.   00006    ff 75 08     push     DWORD PTR _pElementsNew$[ebp]
  1426.   00009    8b f1         mov     esi, ecx
  1427.   0000b    e8 00 00 00 00     call     ?SetDeclaration@CD3DXCrackDecl@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl::SetDeclaration
  1428.  
  1429. ; 274  : 
  1430. ; 275  : #ifdef DEBUG
  1431. ; 276  :         // this class only works for single stream data types
  1432. ; 277  :         pPlace = pElementsNew;
  1433. ; 278  :         while(pPlace->Stream != 0xFF)
  1434. ; 279  :         {
  1435. ; 280  :             GXASSERT(pPlace->Stream == 0);
  1436. ; 281  :             pPlace++;
  1437. ; 282  :         }
  1438. ; 283  : #endif
  1439. ; 284  :         // should be pointing into local copy of declaration
  1440. ; 285  :         pPlace = pElements;
  1441.  
  1442.   00010    8b 06         mov     eax, DWORD PTR [esi]
  1443.   00012    e9 c9 00 00 00     jmp     $L56857
  1444. $L56021:
  1445.  
  1446. ; 288  :         {
  1447. ; 289  :             if (pPlace->UsageIndex == 0 || pPlace->Usage == D3DDECLUSAGE_TEXCOORD || 
  1448. ; 290  :                 pPlace->Usage == D3DDECLUSAGE_COLOR )
  1449.  
  1450.   00017    8a 50 07     mov     dl, BYTE PTR [eax+7]
  1451.   0001a    84 d2         test     dl, dl
  1452.   0001c    74 11         je     SHORT $L56024
  1453.   0001e    8a 48 06     mov     cl, BYTE PTR [eax+6]
  1454.   00021    80 f9 05     cmp     cl, 5
  1455.   00024    74 09         je     SHORT $L56024
  1456.   00026    80 f9 0a     cmp     cl, 10            ; 0000000aH
  1457.   00029    0f 85 ae 00 00
  1458.     00         jne     $L56030
  1459. $L56024:
  1460.  
  1461. ; 291  :             {
  1462. ; 292  :                 switch (pPlace->Usage)
  1463.  
  1464.   0002f    0f b6 48 06     movzx     ecx, BYTE PTR [eax+6]
  1465.   00033    83 e9 00     sub     ecx, 0
  1466.   00036    0f 84 95 00 00
  1467.     00         je     $L56029
  1468.   0003c    49         dec     ecx
  1469.   0003d    0f 84 80 00 00
  1470.     00         je     $L56031
  1471.   00043    49         dec     ecx
  1472.   00044    74 68         je     SHORT $L56033
  1473.   00046    49         dec     ecx
  1474.   00047    74 57         je     SHORT $L56036
  1475.   00049    49         dec     ecx
  1476.   0004a    49         dec     ecx
  1477.   0004b    74 3c         je     SHORT $L56046
  1478.   0004d    83 e9 05     sub     ecx, 5
  1479.   00050    0f 85 87 00 00
  1480.     00         jne     $L56030
  1481.  
  1482. ; 321  : 
  1483. ; 322  :                 case D3DDECLUSAGE_COLOR:
  1484. ; 323  :                     if (pPlace->UsageIndex == 0)
  1485.  
  1486.   00056    84 d2         test     dl, dl
  1487.   00058    75 15         jne     SHORT $L56039
  1488.  
  1489. ; 324  :                     {
  1490. ; 325  :                         if ((pPlace->Type == D3DDECLTYPE_FLOAT4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1491.  
  1492.   0005a    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1493.   0005d    80 f9 03     cmp     cl, 3
  1494.   00060    74 05         je     SHORT $L56041
  1495.   00062    80 f9 04     cmp     cl, 4
  1496.   00065    75 76         jne     SHORT $L56030
  1497. $L56041:
  1498.  
  1499. ; 326  :                         {
  1500. ; 327  :                             pDiffuseElement = pPlace;
  1501.  
  1502.   00067    89 86 98 00 00
  1503.     00         mov     DWORD PTR [esi+152], eax
  1504.  
  1505. ; 328  :                         }
  1506. ; 329  :                     }
  1507. ; 330  :                     else
  1508.  
  1509.   0006d    eb 6e         jmp     SHORT $L56030
  1510. $L56039:
  1511.  
  1512. ; 331  :                     if (pPlace->UsageIndex == 1)
  1513.  
  1514.   0006f    80 fa 01     cmp     dl, 1
  1515.   00072    75 69         jne     SHORT $L56030
  1516.  
  1517. ; 332  :                     {
  1518. ; 333  :                         if ((pPlace->Type == D3DDECLTYPE_FLOAT4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1519.  
  1520.   00074    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1521.   00077    80 f9 03     cmp     cl, 3
  1522.   0007a    74 05         je     SHORT $L56045
  1523.   0007c    80 f9 04     cmp     cl, 4
  1524.   0007f    75 5c         jne     SHORT $L56030
  1525. $L56045:
  1526.  
  1527. ; 334  :                         {
  1528. ; 335  :                             pSpecularElement = pPlace;
  1529.  
  1530.   00081    89 86 9c 00 00
  1531.     00         mov     DWORD PTR [esi+156], eax
  1532.  
  1533. ; 336  :                         }
  1534. ; 337  :                     }
  1535. ; 338  :                     break;
  1536.  
  1537.   00087    eb 54         jmp     SHORT $L56030
  1538. $L56046:
  1539.  
  1540. ; 339  : 
  1541. ; 340  :                 case D3DDECLUSAGE_TEXCOORD:
  1542. ; 341  :                     if ((pPlace->Type >= D3DDECLTYPE_FLOAT1) && (pPlace->Type <= D3DDECLTYPE_FLOAT4) && (pPlace->UsageIndex < 8))
  1543.  
  1544.   00089    80 78 04 03     cmp     BYTE PTR [eax+4], 3
  1545.   0008d    77 4e         ja     SHORT $L56030
  1546.   0008f    80 fa 08     cmp     dl, 8
  1547.   00092    73 49         jae     SHORT $L56030
  1548.  
  1549. ; 342  :                     {
  1550. ; 343  :                         rgpTextureElements[pPlace->UsageIndex] = pPlace;
  1551.  
  1552.   00094    0f b6 ca     movzx     ecx, dl
  1553.   00097    89 84 8e a0 00
  1554.     00 00         mov     DWORD PTR [esi+ecx*4+160], eax
  1555.  
  1556. ; 344  :                     }
  1557. ; 345  :                     break;
  1558.  
  1559.   0009e    eb 3d         jmp     SHORT $L56030
  1560. $L56036:
  1561.  
  1562. ; 314  : 
  1563. ; 315  :                 case D3DDECLUSAGE_NORMAL:
  1564. ; 316  :                     if (pPlace->Type == D3DDECLTYPE_FLOAT3)
  1565.  
  1566.   000a0    80 78 04 02     cmp     BYTE PTR [eax+4], 2
  1567.   000a4    75 37         jne     SHORT $L56030
  1568.  
  1569. ; 317  :                     {
  1570. ; 318  :                         pNormalElement = pPlace;
  1571.  
  1572.   000a6    89 86 94 00 00
  1573.     00         mov     DWORD PTR [esi+148], eax
  1574.  
  1575. ; 319  :                     }
  1576. ; 320  :                     break;
  1577.  
  1578.   000ac    eb 2f         jmp     SHORT $L56030
  1579. $L56033:
  1580.  
  1581. ; 307  : 
  1582. ; 308  :                 case D3DDECLUSAGE_BLENDINDICES:
  1583. ; 309  :                     if ((pPlace->Type == D3DDECLTYPE_UBYTE4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1584.  
  1585.   000ae    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1586.   000b1    80 f9 05     cmp     cl, 5
  1587.   000b4    74 05         je     SHORT $L56035
  1588.   000b6    80 f9 04     cmp     cl, 4
  1589.   000b9    75 22         jne     SHORT $L56030
  1590. $L56035:
  1591.  
  1592. ; 310  :                     {
  1593. ; 311  :                         pIndexElement = pPlace;
  1594.  
  1595.   000bb    89 86 90 00 00
  1596.     00         mov     DWORD PTR [esi+144], eax
  1597.  
  1598. ; 312  :                     }
  1599. ; 313  :                     break;
  1600.  
  1601.   000c1    eb 1a         jmp     SHORT $L56030
  1602. $L56031:
  1603.  
  1604. ; 298  :                     }
  1605. ; 299  :                     break;
  1606. ; 300  : 
  1607. ; 301  :                 case D3DDECLUSAGE_BLENDWEIGHT:
  1608. ; 302  :                     if ((pPlace->Type >= D3DDECLTYPE_FLOAT1) && (pPlace->Type <= D3DDECLTYPE_FLOAT4))
  1609.  
  1610.   000c3    80 78 04 03     cmp     BYTE PTR [eax+4], 3
  1611.   000c7    77 14         ja     SHORT $L56030
  1612.  
  1613. ; 303  :                     {
  1614. ; 304  :                         pWeightElement = pPlace;
  1615.  
  1616.   000c9    89 86 8c 00 00
  1617.     00         mov     DWORD PTR [esi+140], eax
  1618.  
  1619. ; 305  :                     }
  1620. ; 306  :                     break;
  1621.  
  1622.   000cf    eb 0c         jmp     SHORT $L56030
  1623. $L56029:
  1624.  
  1625. ; 293  :                 {
  1626. ; 294  :                 case D3DDECLUSAGE_POSITION:
  1627. ; 295  :                     if (pPlace->Type == D3DDECLTYPE_FLOAT3)
  1628.  
  1629.   000d1    80 78 04 02     cmp     BYTE PTR [eax+4], 2
  1630.   000d5    75 06         jne     SHORT $L56030
  1631.  
  1632. ; 296  :                     {
  1633. ; 297  :                         pPositionElement = pPlace;
  1634.  
  1635.   000d7    89 86 88 00 00
  1636.     00         mov     DWORD PTR [esi+136], eax
  1637. $L56030:
  1638.  
  1639. ; 346  :                 }
  1640. ; 347  :             }
  1641. ; 348  : 
  1642. ; 349  :             pPlace++;
  1643.  
  1644.   000dd    83 c0 08     add     eax, 8
  1645. $L56857:
  1646.  
  1647. ; 286  : 
  1648. ; 287  :         while(pPlace->Stream != 0xFF)
  1649.  
  1650.   000e0    66 81 38 ff 00     cmp     WORD PTR [eax], 255    ; 000000ffH
  1651.   000e5    0f 85 2c ff ff
  1652.     ff         jne     $L56021
  1653.  
  1654. ; 350  :         }
  1655. ; 351  : 
  1656. ; 352  :         m_cBytesPerVertex = D3DXGetDeclVertexSize(pElements,0);
  1657.  
  1658.   000eb    6a 00         push     0
  1659.   000ed    ff 36         push     DWORD PTR [esi]
  1660.   000ef    e8 00 00 00 00     call     _D3DXGetDeclVertexSize@8
  1661.   000f4    89 86 c0 00 00
  1662.     00         mov     DWORD PTR [esi+192], eax
  1663.  
  1664. ; 353  : 
  1665. ; 354  :         return S_OK;
  1666.  
  1667.   000fa    33 c0         xor     eax, eax
  1668.   000fc    5e         pop     esi
  1669.  
  1670. ; 355  :     }
  1671.  
  1672.   000fd    5d         pop     ebp
  1673.   000fe    c2 04 00     ret     4
  1674. ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ENDP ; CD3DXCrackDecl1::SetDeclaration
  1675. _TEXT    ENDS
  1676. PUBLIC    ??0CStripOutline@@QAE@XZ            ; CStripOutline::CStripOutline
  1677. ; Function compile flags: /Ogs
  1678. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\stripoutline.cpp
  1679. ;    COMDAT ??0CStripOutline@@QAE@XZ
  1680. _TEXT    SEGMENT
  1681. ??0CStripOutline@@QAE@XZ PROC NEAR            ; CStripOutline::CStripOutline, COMDAT
  1682. ; _this$ = ecx
  1683.  
  1684. ; 56   : }
  1685.  
  1686.   00000    8b ff         npad     2
  1687.   00002    56         push     esi
  1688.  
  1689. ; 55   : {
  1690.  
  1691.   00003    6a 02         push     2
  1692.   00005    8b f1         mov     esi, ecx
  1693.   00007    e8 00 00 00 00     call     ??0DXCrackFVF@@QAE@K@Z    ; DXCrackFVF::DXCrackFVF
  1694.   0000c    33 c0         xor     eax, eax
  1695.   0000e    89 46 40     mov     DWORD PTR [esi+64], eax
  1696.   00011    89 46 44     mov     DWORD PTR [esi+68], eax
  1697.   00014    89 46 48     mov     DWORD PTR [esi+72], eax
  1698.   00017    89 46 4c     mov     DWORD PTR [esi+76], eax
  1699.   0001a    89 46 50     mov     DWORD PTR [esi+80], eax
  1700.   0001d    89 46 54     mov     DWORD PTR [esi+84], eax
  1701.   00020    89 46 58     mov     DWORD PTR [esi+88], eax
  1702.   00023    89 46 5c     mov     DWORD PTR [esi+92], eax
  1703.   00026    89 46 60     mov     DWORD PTR [esi+96], eax
  1704.  
  1705. ; 56   : }
  1706.  
  1707.   00029    8b c6         mov     eax, esi
  1708.   0002b    5e         pop     esi
  1709.   0002c    c3         ret     0
  1710. ??0CStripOutline@@QAE@XZ ENDP                ; CStripOutline::CStripOutline
  1711. _TEXT    ENDS
  1712. PUBLIC    __real@3eaaaaab
  1713. PUBLIC    ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ; CStripOutline::AppendPoint
  1714. ;    COMDAT __real@3eaaaaab
  1715. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  1716. CONST    SEGMENT
  1717. __real@3eaaaaab DD 03eaaaaabr            ; 0.333333
  1718. ; Function compile flags: /Ogs
  1719. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\stripoutline.cpp
  1720. CONST    ENDS
  1721. ;    COMDAT ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z
  1722. _TEXT    SEGMENT
  1723. _vTemp$ = -12                        ; size = 12
  1724. _cdMesh$ = 8                        ; size = 4
  1725. _pwFace$ = 12                        ; size = 4
  1726. _pvMeshPoints$ = 16                    ; size = 4
  1727. _pvLinePoints$ = 20                    ; size = 4
  1728. _iCurPoint$ = 24                    ; size = 4
  1729. ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z PROC NEAR ; CStripOutline::AppendPoint, COMDAT
  1730. ; _this$ = ecx
  1731.  
  1732. ; 117  : }
  1733.  
  1734.   00000    8b ff         npad     2
  1735.  
  1736. ; 99   : {
  1737.  
  1738.   00002    55         push     ebp
  1739.   00003    8b ec         mov     ebp, esp
  1740.   00005    83 ec 0c     sub     esp, 12            ; 0000000cH
  1741.  
  1742. ; 100  :     D3DXVECTOR3 vTemp(0,0,0);
  1743. ; 101  :     UINT iPoint;
  1744. ; 102  :     PVOID pvPoint;
  1745. ; 103  : 
  1746. ; 104  :     for (iPoint = 0; iPoint < 3; iPoint++)
  1747.  
  1748.   00008    8b 45 08     mov     eax, DWORD PTR _cdMesh$[ebp]
  1749.   0000b    d9 ee         fldz
  1750.   0000d    56         push     esi
  1751.   0000e    d9 ee         fldz
  1752.   00010    8b b0 c0 00 00
  1753.     00         mov     esi, DWORD PTR [eax+192]
  1754.   00016    d9 5d f8     fstp     DWORD PTR _vTemp$[ebp+4]
  1755.  
  1756. ; 105  :     {
  1757. ; 106  :         pvPoint = cdMesh.GetArrayElem((PBYTE)pvMeshPoints, pwFace[iPoint]);
  1758. ; 107  :         vTemp += *cdMesh.PvGetPosition((PBYTE)pvPoint);
  1759. ; 108  :     }
  1760. ; 109  : 
  1761. ; 110  :     vTemp /= 3.0f;
  1762. ; 111  : 
  1763. ; 112  :     pvPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  1764. ; 113  : 
  1765. ; 114  :     m_cfvf.SetPosition(pvPoint, (D3DXVECTOR3*)&vTemp);
  1766. ; 115  : 
  1767. ; 116  :     iCurPoint += 1;
  1768.  
  1769.   00019    8b 80 88 00 00
  1770.     00         mov     eax, DWORD PTR [eax+136]
  1771.   0001f    d9 ee         fldz
  1772.   00021    57         push     edi
  1773.   00022    0f b7 78 02     movzx     edi, WORD PTR [eax+2]
  1774.   00026    33 d2         xor     edx, edx
  1775. $L56343:
  1776.   00028    8b 45 0c     mov     eax, DWORD PTR _pwFace$[ebp]
  1777.   0002b    d9 c1         fld     ST(1)
  1778.   0002d    8b 04 90     mov     eax, DWORD PTR [eax+edx*4]
  1779.   00030    0f af c6     imul     eax, esi
  1780.   00033    03 c7         add     eax, edi
  1781.   00035    03 45 10     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  1782.   00038    42         inc     edx
  1783.   00039    83 fa 03     cmp     edx, 3
  1784.   0003c    d8 00         fadd     DWORD PTR [eax]
  1785.   0003e    dd da         fstp     ST(2)
  1786.   00040    d9 45 f8     fld     DWORD PTR _vTemp$[ebp+4]
  1787.   00043    d8 40 04     fadd     DWORD PTR [eax+4]
  1788.   00046    d9 5d f8     fstp     DWORD PTR _vTemp$[ebp+4]
  1789.   00049    d9 c0         fld     ST(0)
  1790.   0004b    d8 40 08     fadd     DWORD PTR [eax+8]
  1791.   0004e    dd d9         fstp     ST(1)
  1792.   00050    72 d6         jb     SHORT $L56343
  1793.   00052    d9 05 00 00 00
  1794.     00         fld     DWORD PTR __real@3eaaaaab
  1795.   00058    8b 79 04     mov     edi, DWORD PTR [ecx+4]
  1796.   0005b    8b 45 18     mov     eax, DWORD PTR _iCurPoint$[ebp]
  1797.   0005e    d9 c2         fld     ST(2)
  1798.   00060    0f af 38     imul     edi, DWORD PTR [eax]
  1799.   00063    d8 c9         fmul     ST(0), ST(1)
  1800.   00065    d9 5d f4     fstp     DWORD PTR _vTemp$[ebp]
  1801.   00068    d9 45 f8     fld     DWORD PTR _vTemp$[ebp+4]
  1802.   0006b    d8 c9         fmul     ST(0), ST(1)
  1803.   0006d    03 7d 14     add     edi, DWORD PTR _pvLinePoints$[ebp]
  1804.   00070    d9 5d f8     fstp     DWORD PTR _vTemp$[ebp+4]
  1805.   00073    d9 c1         fld     ST(1)
  1806.   00075    8d 75 f4     lea     esi, DWORD PTR _vTemp$[ebp]
  1807.   00078    d8 c9         fmul     ST(0), ST(1)
  1808.   0007a    d9 5d fc     fstp     DWORD PTR _vTemp$[ebp+8]
  1809.   0007d    a5         movsd
  1810.   0007e    a5         movsd
  1811.   0007f    dd d8         fstp     ST(0)
  1812.   00081    dd d8         fstp     ST(0)
  1813.   00083    dd d8         fstp     ST(0)
  1814.   00085    a5         movsd
  1815.   00086    ff 00         inc     DWORD PTR [eax]
  1816.   00088    5f         pop     edi
  1817.   00089    5e         pop     esi
  1818.  
  1819. ; 117  : }
  1820.  
  1821.   0008a    c9         leave
  1822.   0008b    c2 14 00     ret     20            ; 00000014H
  1823. ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ENDP ; CStripOutline::AppendPoint
  1824. _TEXT    ENDS
  1825. PUBLIC    __real@3f000000
  1826. PUBLIC    ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendMidpoint
  1827. ;    COMDAT __real@3f000000
  1828. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  1829. CONST    SEGMENT
  1830. __real@3f000000 DD 03f000000r            ; 0.5
  1831. ; Function compile flags: /Ogs
  1832. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\stripoutline.cpp
  1833. CONST    ENDS
  1834. ;    COMDAT ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z
  1835. _TEXT    SEGMENT
  1836. _vTemp$ = -12                        ; size = 12
  1837. _cdMesh$ = 8                        ; size = 4
  1838. _pwFace1$ = 12                        ; size = 4
  1839. _pwFace2$ = 16                        ; size = 4
  1840. _pvMeshPoints$ = 20                    ; size = 4
  1841. _pvLinePoints$ = 24                    ; size = 4
  1842. _iCurPoint$ = 28                    ; size = 4
  1843. ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z PROC NEAR ; CStripOutline::AppendMidpoint, COMDAT
  1844. ; _this$ = ecx
  1845.  
  1846. ; 158  : }
  1847.  
  1848.   00000    8b ff         npad     2
  1849.  
  1850. ; 129  : {
  1851.  
  1852.   00002    55         push     ebp
  1853.   00003    8b ec         mov     ebp, esp
  1854.   00005    83 ec 0c     sub     esp, 12            ; 0000000cH
  1855.   00008    53         push     ebx
  1856.  
  1857. ; 130  :     D3DXVECTOR3 vTemp(0,0,0);
  1858.  
  1859.   00009    d9 ee         fldz
  1860.   0000b    56         push     esi
  1861.   0000c    d9 ee         fldz
  1862.  
  1863. ; 131  :     UINT iPoint1;
  1864. ; 132  :     UINT iPoint2;
  1865. ; 133  :     PVOID pvPoint;
  1866. ; 134  : 
  1867. ; 135  :     GXASSERT(BConnected(pwFace1, pwFace2));
  1868. ; 136  : 
  1869. ; 137  :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  1870.  
  1871.   0000e    8b 75 08     mov     esi, DWORD PTR _cdMesh$[ebp]
  1872.   00011    d9 5d f8     fstp     DWORD PTR _vTemp$[ebp+4]
  1873.   00014    57         push     edi
  1874.   00015    d9 ee         fldz
  1875.   00017    33 ff         xor     edi, edi
  1876. $L56919:
  1877.  
  1878. ; 138  :     {
  1879. ; 139  :         for (iPoint2 = 0; iPoint2 < 3; iPoint2++)
  1880. ; 140  :         {
  1881. ; 141  :             if (pwFace1[iPoint1] == pwFace2[iPoint2])
  1882.  
  1883.   00019    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  1884.   0001c    8b 04 b8     mov     eax, DWORD PTR [eax+edi*4]
  1885.   0001f    33 d2         xor     edx, edx
  1886. $L56366:
  1887.   00021    8b 5d 10     mov     ebx, DWORD PTR _pwFace2$[ebp]
  1888.   00024    3b 04 93     cmp     eax, DWORD PTR [ebx+edx*4]
  1889.   00027    74 08         je     SHORT $L56914
  1890.   00029    42         inc     edx
  1891.   0002a    83 fa 03     cmp     edx, 3
  1892.   0002d    72 f2         jb     SHORT $L56366
  1893.   0002f    eb 2e         jmp     SHORT $L56364
  1894. $L56914:
  1895.  
  1896. ; 142  :             {
  1897. ; 143  :                 pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[iPoint1]);
  1898.  
  1899.   00031    8b 96 c0 00 00
  1900.     00         mov     edx, DWORD PTR [esi+192]
  1901.  
  1902. ; 144  :                 vTemp += *cdMesh.PvGetPosition((PBYTE)pvPoint);
  1903.  
  1904.   00037    d9 c1         fld     ST(1)
  1905.   00039    0f af d0     imul     edx, eax
  1906.   0003c    8b 86 88 00 00
  1907.     00         mov     eax, DWORD PTR [esi+136]
  1908.   00042    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1909.  
  1910. ; 145  : 
  1911. ; 146  :                 break;
  1912. ; 147  :             }
  1913. ; 148  :         }
  1914. ; 149  :     }
  1915. ; 150  : 
  1916. ; 151  :     vTemp /= 2.0f;
  1917. ; 152  : 
  1918. ; 153  :     pvPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  1919. ; 154  : 
  1920. ; 155  :     m_cfvf.SetPosition(pvPoint, (D3DXVECTOR3*)&vTemp);
  1921. ; 156  : 
  1922. ; 157  :     iCurPoint += 1;
  1923.  
  1924.   00046    03 55 14     add     edx, DWORD PTR _pvMeshPoints$[ebp]
  1925.   00049    03 c2         add     eax, edx
  1926.   0004b    d8 00         fadd     DWORD PTR [eax]
  1927.   0004d    dd da         fstp     ST(2)
  1928.   0004f    d9 45 f8     fld     DWORD PTR _vTemp$[ebp+4]
  1929.   00052    d8 40 04     fadd     DWORD PTR [eax+4]
  1930.   00055    d9 5d f8     fstp     DWORD PTR _vTemp$[ebp+4]
  1931.   00058    d9 c0         fld     ST(0)
  1932.   0005a    d8 40 08     fadd     DWORD PTR [eax+8]
  1933.   0005d    dd d9         fstp     ST(1)
  1934. $L56364:
  1935.   0005f    47         inc     edi
  1936.   00060    83 ff 03     cmp     edi, 3
  1937.   00063    72 b4         jb     SHORT $L56919
  1938.   00065    d9 05 00 00 00
  1939.     00         fld     DWORD PTR __real@3f000000
  1940.   0006b    8b 79 04     mov     edi, DWORD PTR [ecx+4]
  1941.   0006e    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  1942.   00071    d9 c2         fld     ST(2)
  1943.   00073    0f af 38     imul     edi, DWORD PTR [eax]
  1944.   00076    d8 c9         fmul     ST(0), ST(1)
  1945.   00078    d9 5d f4     fstp     DWORD PTR _vTemp$[ebp]
  1946.   0007b    d9 45 f8     fld     DWORD PTR _vTemp$[ebp+4]
  1947.   0007e    d8 c9         fmul     ST(0), ST(1)
  1948.   00080    03 7d 18     add     edi, DWORD PTR _pvLinePoints$[ebp]
  1949.   00083    d9 5d f8     fstp     DWORD PTR _vTemp$[ebp+4]
  1950.   00086    d9 c1         fld     ST(1)
  1951.   00088    8d 75 f4     lea     esi, DWORD PTR _vTemp$[ebp]
  1952.   0008b    d8 c9         fmul     ST(0), ST(1)
  1953.   0008d    d9 5d fc     fstp     DWORD PTR _vTemp$[ebp+8]
  1954.   00090    a5         movsd
  1955.   00091    a5         movsd
  1956.   00092    dd d8         fstp     ST(0)
  1957.   00094    dd d8         fstp     ST(0)
  1958.   00096    dd d8         fstp     ST(0)
  1959.   00098    a5         movsd
  1960.   00099    ff 00         inc     DWORD PTR [eax]
  1961.   0009b    5f         pop     edi
  1962.   0009c    5e         pop     esi
  1963.   0009d    5b         pop     ebx
  1964.  
  1965. ; 158  : }
  1966.  
  1967.   0009e    c9         leave
  1968.   0009f    c2 18 00     ret     24            ; 00000018H
  1969. ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ENDP ; CStripOutline::AppendMidpoint
  1970. _TEXT    ENDS
  1971. PUBLIC    ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendSkinnedPoint
  1972. EXTRN    ?CopyWeights@@YAXPAMK0K@Z:NEAR            ; CopyWeights
  1973. ; Function compile flags: /Ogs
  1974. ;    COMDAT ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z
  1975. _TEXT    SEGMENT
  1976. _vAvg$ = -16                        ; size = 12
  1977. _this$ = -4                        ; size = 4
  1978. _cdMesh$ = 8                        ; size = 4
  1979. _pwFace1$ = 12                        ; size = 4
  1980. _iEdge$ = 16                        ; size = 4
  1981. _pvMeshPoints$ = 20                    ; size = 4
  1982. _pvDestPoint$ = 24                    ; size = 4
  1983. _pvLinePoints$ = 24                    ; size = 4
  1984. _iCurPoint$ = 28                    ; size = 4
  1985. ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z PROC NEAR ; CStripOutline::AppendSkinnedPoint, COMDAT
  1986. ; _this$ = ecx
  1987.  
  1988. ; 249  : }
  1989.  
  1990.   00000    8b ff         npad     2
  1991.  
  1992. ; 210  : {
  1993.  
  1994.   00002    55         push     ebp
  1995.   00003    8b ec         mov     ebp, esp
  1996.   00005    83 ec 10     sub     esp, 16            ; 00000010H
  1997.  
  1998. ; 211  :     PBYTE pvDestPoint;
  1999. ; 212  :     PBYTE pvPoint;
  2000. ; 213  :     D3DXVECTOR3 vAvg(1.0f/3.0f,1.0f/3.0f,1.0f/3.0f);
  2001. ; 214  : 
  2002. ; 215  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2003.  
  2004.   00008    8b 51 04     mov     edx, DWORD PTR [ecx+4]
  2005.   0000b    d9 05 00 00 00
  2006.     00         fld     DWORD PTR __real@3eaaaaab
  2007.   00011    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2008.   00014    d9 55 f0     fst     DWORD PTR _vAvg$[ebp]
  2009.   00017    0f af 10     imul     edx, DWORD PTR [eax]
  2010.   0001a    d9 55 f4     fst     DWORD PTR _vAvg$[ebp+4]
  2011.   0001d    d9 5d f8     fstp     DWORD PTR _vAvg$[ebp+8]
  2012.  
  2013. ; 216  : 
  2014. ; 217  :     // Point 0 - first point on edge shared with another triangle
  2015. ; 218  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[iEdge]);
  2016.  
  2017.   00020    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2018.   00023    03 55 18     add     edx, DWORD PTR _pvLinePoints$[ebp]
  2019.   00026    53         push     ebx
  2020.   00027    8b 5d 08     mov     ebx, DWORD PTR _cdMesh$[ebp]
  2021.   0002a    56         push     esi
  2022.   0002b    8b 75 10     mov     esi, DWORD PTR _iEdge$[ebp]
  2023.   0002e    8b 04 b0     mov     eax, DWORD PTR [eax+esi*4]
  2024.   00031    0f af 83 c0 00
  2025.     00 00         imul     eax, DWORD PTR [ebx+192]
  2026.  
  2027. ; 219  : 
  2028. ; 220  :     // first position goes in standard position spot
  2029. ; 221  :     m_cfvf.SetPosition(pvDestPoint, cdMesh.PvGetPosition(pvPoint));
  2030.  
  2031.   00038    8b b3 88 00 00
  2032.     00         mov     esi, DWORD PTR [ebx+136]
  2033.   0003e    0f b7 76 02     movzx     esi, WORD PTR [esi+2]
  2034.   00042    03 45 14     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  2035.   00045    57         push     edi
  2036.   00046    03 f0         add     esi, eax
  2037.   00048    8b fa         mov     edi, edx
  2038.   0004a    a5         movsd
  2039.   0004b    a5         movsd
  2040.   0004c    a5         movsd
  2041.  
  2042. ; 222  : 
  2043. ; 223  :     // first set of weights go in standard spot - expand to standard length
  2044. ; 224  :     CopyWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights(), m_cfvf.PfGetWeights(pvDestPoint), m_cfvf.CWeights());
  2045.  
  2046.   0004d    8b 71 38     mov     esi, DWORD PTR [ecx+56]
  2047.   00050    89 4d fc     mov     DWORD PTR _this$[ebp], ecx
  2048.   00053    8b 8b 8c 00 00
  2049.     00         mov     ecx, DWORD PTR [ebx+140]
  2050.   00059    85 c9         test     ecx, ecx
  2051.   0005b    89 55 18     mov     DWORD PTR _pvDestPoint$[ebp], edx
  2052.   0005e    75 04         jne     SHORT $L56948
  2053.   00060    33 ff         xor     edi, edi
  2054.   00062    eb 05         jmp     SHORT $L56949
  2055. $L56948:
  2056.   00064    0f b6 79 04     movzx     edi, BYTE PTR [ecx+4]
  2057.   00068    47         inc     edi
  2058. $L56949:
  2059.   00069    0f b7 49 02     movzx     ecx, WORD PTR [ecx+2]
  2060.   0006d    56         push     esi
  2061.   0006e    83 c2 0c     add     edx, 12            ; 0000000cH
  2062.   00071    52         push     edx
  2063.   00072    03 c8         add     ecx, eax
  2064.   00074    57         push     edi
  2065.   00075    51         push     ecx
  2066.   00076    e8 00 00 00 00     call     ?CopyWeights@@YAXPAMK0K@Z ; CopyWeights
  2067.  
  2068. ; 225  : 
  2069. ; 226  :     // Point 1 - other point on edge shared with another triangle
  2070. ; 227  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+1)%3]);
  2071.  
  2072.   0007b    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2073.   0007e    83 c4 10     add     esp, 16            ; 00000010H
  2074.   00081    6a 03         push     3
  2075.   00083    40         inc     eax
  2076.   00084    59         pop     ecx
  2077.   00085    33 d2         xor     edx, edx
  2078.   00087    f7 f1         div     ecx
  2079.   00089    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2080.  
  2081. ; 228  : 
  2082. ; 229  :     // second position goes in first texture coord
  2083. ; 230  :     m_cfvf.SetTexCoord(pvDestPoint, 0, cdMesh.PvGetPosition(pvPoint));
  2084.  
  2085.   0008c    8b 7d fc     mov     edi, DWORD PTR _this$[ebp]
  2086.   0008f    8b cf         mov     ecx, edi
  2087.   00091    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2088.   00094    0f af b3 c0 00
  2089.     00 00         imul     esi, DWORD PTR [ebx+192]
  2090.   0009b    8b 83 88 00 00
  2091.     00         mov     eax, DWORD PTR [ebx+136]
  2092.   000a1    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2093.   000a5    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2094.   000a8    03 c6         add     eax, esi
  2095.   000aa    50         push     eax
  2096.   000ab    6a 00         push     0
  2097.   000ad    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2098.   000b0    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2099.  
  2100. ; 231  : 
  2101. ; 232  :     // second set of weights go in second texture coord- expand to standard length
  2102. ; 233  :     CopyWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights(), (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 1), m_cfvf.CWeights());
  2103.  
  2104.   000b5    8b 83 8c 00 00
  2105.     00         mov     eax, DWORD PTR [ebx+140]
  2106.   000bb    85 c0         test     eax, eax
  2107.   000bd    8b 4f 38     mov     ecx, DWORD PTR [edi+56]
  2108.   000c0    75 04         jne     SHORT $L56971
  2109.   000c2    33 d2         xor     edx, edx
  2110.   000c4    eb 05         jmp     SHORT $L56972
  2111. $L56971:
  2112.   000c6    0f b6 50 04     movzx     edx, BYTE PTR [eax+4]
  2113.   000ca    42         inc     edx
  2114. $L56972:
  2115.   000cb    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2116.   000cf    51         push     ecx
  2117.   000d0    8b 4f 1c     mov     ecx, DWORD PTR [edi+28]
  2118.   000d3    03 4d 18     add     ecx, DWORD PTR _pvDestPoint$[ebp]
  2119.   000d6    03 c6         add     eax, esi
  2120.   000d8    51         push     ecx
  2121.   000d9    52         push     edx
  2122.   000da    50         push     eax
  2123.   000db    e8 00 00 00 00     call     ?CopyWeights@@YAXPAMK0K@Z ; CopyWeights
  2124.  
  2125. ; 234  : 
  2126. ; 235  :     // Point 2 - point NOT on edge shared with another triangle
  2127. ; 236  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+2)%3]);
  2128.  
  2129.   000e0    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2130.   000e3    83 c4 10     add     esp, 16            ; 00000010H
  2131.   000e6    6a 03         push     3
  2132.   000e8    83 c0 02     add     eax, 2
  2133.   000eb    59         pop     ecx
  2134.   000ec    33 d2         xor     edx, edx
  2135.   000ee    f7 f1         div     ecx
  2136.   000f0    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2137.  
  2138. ; 237  : 
  2139. ; 238  :     // third position goes in the third texture coordinate
  2140. ; 239  :     m_cfvf.SetTexCoord(pvDestPoint, 2, cdMesh.PvGetPosition(pvPoint));
  2141.  
  2142.   000f3    8b cf         mov     ecx, edi
  2143.   000f5    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2144.   000f8    0f af b3 c0 00
  2145.     00 00         imul     esi, DWORD PTR [ebx+192]
  2146.   000ff    8b 83 88 00 00
  2147.     00         mov     eax, DWORD PTR [ebx+136]
  2148.   00105    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2149.   00109    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2150.   0010c    03 c6         add     eax, esi
  2151.   0010e    50         push     eax
  2152.   0010f    6a 02         push     2
  2153.   00111    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2154.   00114    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2155.  
  2156. ; 240  : 
  2157. ; 241  :     // third set of weights go in fourth texture coord- expand to standard length
  2158. ; 242  :     CopyWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights(), (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 3), m_cfvf.CWeights());
  2159.  
  2160.   00119    8b 9b 8c 00 00
  2161.     00         mov     ebx, DWORD PTR [ebx+140]
  2162.   0011f    85 db         test     ebx, ebx
  2163.   00121    8b 47 38     mov     eax, DWORD PTR [edi+56]
  2164.   00124    75 04         jne     SHORT $L56995
  2165.   00126    33 c9         xor     ecx, ecx
  2166.   00128    eb 05         jmp     SHORT $L56996
  2167. $L56995:
  2168.   0012a    0f b6 4b 04     movzx     ecx, BYTE PTR [ebx+4]
  2169.   0012e    41         inc     ecx
  2170. $L56996:
  2171.   0012f    50         push     eax
  2172.   00130    8b 47 24     mov     eax, DWORD PTR [edi+36]
  2173.   00133    03 45 18     add     eax, DWORD PTR _pvDestPoint$[ebp]
  2174.   00136    50         push     eax
  2175.   00137    0f b7 43 02     movzx     eax, WORD PTR [ebx+2]
  2176.   0013b    51         push     ecx
  2177.   0013c    03 c6         add     eax, esi
  2178.   0013e    50         push     eax
  2179.   0013f    e8 00 00 00 00     call     ?CopyWeights@@YAXPAMK0K@Z ; CopyWeights
  2180.   00144    83 c4 10     add     esp, 16            ; 00000010H
  2181.  
  2182. ; 243  : 
  2183. ; 244  : 
  2184. ; 245  :     // the third position should be added in
  2185. ; 246  :     m_cfvf.SetTexCoord(pvDestPoint, 4, &vAvg);
  2186.  
  2187.   00147    8d 45 f0     lea     eax, DWORD PTR _vAvg$[ebp]
  2188.   0014a    50         push     eax
  2189.   0014b    6a 04         push     4
  2190.   0014d    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2191.   00150    8b cf         mov     ecx, edi
  2192.   00152    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2193.  
  2194. ; 247  : 
  2195. ; 248  :     iCurPoint += 1;
  2196.  
  2197.   00157    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2198.   0015a    ff 00         inc     DWORD PTR [eax]
  2199.   0015c    5f         pop     edi
  2200.   0015d    5e         pop     esi
  2201.   0015e    5b         pop     ebx
  2202.  
  2203. ; 249  : }
  2204.  
  2205.   0015f    c9         leave
  2206.   00160    c2 18 00     ret     24            ; 00000018H
  2207. ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ENDP ; CStripOutline::AppendSkinnedPoint
  2208. _TEXT    ENDS
  2209. PUBLIC    ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendIndexSkinnedPoint
  2210. EXTRN    ?CopyIndexedWeights@@YAXPAMK0K@Z:NEAR        ; CopyIndexedWeights
  2211. ; Function compile flags: /Ogs
  2212. ;    COMDAT ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z
  2213. _TEXT    SEGMENT
  2214. _vAvg$ = -16                        ; size = 12
  2215. _this$ = -4                        ; size = 4
  2216. _cdMesh$ = 8                        ; size = 4
  2217. _pwFace1$ = 12                        ; size = 4
  2218. _iEdge$ = 16                        ; size = 4
  2219. _pvMeshPoints$ = 20                    ; size = 4
  2220. _pvDestPoint$ = 24                    ; size = 4
  2221. _pvLinePoints$ = 24                    ; size = 4
  2222. _iCurPoint$ = 28                    ; size = 4
  2223. ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z PROC NEAR ; CStripOutline::AppendIndexSkinnedPoint, COMDAT
  2224. ; _this$ = ecx
  2225.  
  2226. ; 340  : }
  2227.  
  2228.   00000    8b ff         npad     2
  2229.  
  2230. ; 301  : {
  2231.  
  2232.   00002    55         push     ebp
  2233.   00003    8b ec         mov     ebp, esp
  2234.   00005    83 ec 10     sub     esp, 16            ; 00000010H
  2235.  
  2236. ; 302  :     PBYTE pvDestPoint;
  2237. ; 303  :     PBYTE pvPoint;
  2238. ; 304  :     D3DXVECTOR3 vAvg(1.0f/3.0f,1.0f/3.0f,1.0f/3.0f);
  2239. ; 305  : 
  2240. ; 306  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2241.  
  2242.   00008    8b 51 04     mov     edx, DWORD PTR [ecx+4]
  2243.   0000b    d9 05 00 00 00
  2244.     00         fld     DWORD PTR __real@3eaaaaab
  2245.   00011    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2246.   00014    d9 55 f0     fst     DWORD PTR _vAvg$[ebp]
  2247.   00017    0f af 10     imul     edx, DWORD PTR [eax]
  2248.   0001a    d9 55 f4     fst     DWORD PTR _vAvg$[ebp+4]
  2249.   0001d    d9 5d f8     fstp     DWORD PTR _vAvg$[ebp+8]
  2250.  
  2251. ; 307  : 
  2252. ; 308  :     // Point 0 - first point on edge shared with another triangle
  2253. ; 309  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[iEdge]);
  2254.  
  2255.   00020    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2256.   00023    03 55 18     add     edx, DWORD PTR _pvLinePoints$[ebp]
  2257.   00026    53         push     ebx
  2258.   00027    8b 5d 08     mov     ebx, DWORD PTR _cdMesh$[ebp]
  2259.   0002a    56         push     esi
  2260.   0002b    8b 75 10     mov     esi, DWORD PTR _iEdge$[ebp]
  2261.   0002e    8b 04 b0     mov     eax, DWORD PTR [eax+esi*4]
  2262.   00031    0f af 83 c0 00
  2263.     00 00         imul     eax, DWORD PTR [ebx+192]
  2264.  
  2265. ; 310  : 
  2266. ; 311  :     // first position goes in standard position spot
  2267. ; 312  :     m_cfvf.SetPosition(pvDestPoint, cdMesh.PvGetPosition(pvPoint));
  2268.  
  2269.   00038    8b b3 88 00 00
  2270.     00         mov     esi, DWORD PTR [ebx+136]
  2271.   0003e    0f b7 76 02     movzx     esi, WORD PTR [esi+2]
  2272.   00042    03 45 14     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  2273.   00045    57         push     edi
  2274.   00046    03 f0         add     esi, eax
  2275.   00048    8b fa         mov     edi, edx
  2276.   0004a    a5         movsd
  2277.   0004b    a5         movsd
  2278.   0004c    a5         movsd
  2279.  
  2280. ; 313  : 
  2281. ; 314  :     // first set of weights go in standard spot - expand to standard length
  2282. ; 315  :     CopyIndexedWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights() + 1, m_cfvf.PfGetWeights(pvDestPoint), m_cfvf.CWeights());
  2283.  
  2284.   0004d    8b 79 38     mov     edi, DWORD PTR [ecx+56]
  2285.   00050    89 4d fc     mov     DWORD PTR _this$[ebp], ecx
  2286.   00053    8b 8b 8c 00 00
  2287.     00         mov     ecx, DWORD PTR [ebx+140]
  2288.   00059    85 c9         test     ecx, ecx
  2289.   0005b    89 55 18     mov     DWORD PTR _pvDestPoint$[ebp], edx
  2290.   0005e    75 04         jne     SHORT $L57029
  2291.   00060    33 f6         xor     esi, esi
  2292.   00062    eb 05         jmp     SHORT $L57030
  2293. $L57029:
  2294.   00064    0f b6 71 04     movzx     esi, BYTE PTR [ecx+4]
  2295.   00068    46         inc     esi
  2296. $L57030:
  2297.   00069    0f b7 49 02     movzx     ecx, WORD PTR [ecx+2]
  2298.   0006d    57         push     edi
  2299.   0006e    83 c2 0c     add     edx, 12            ; 0000000cH
  2300.   00071    52         push     edx
  2301.   00072    46         inc     esi
  2302.   00073    03 c8         add     ecx, eax
  2303.   00075    56         push     esi
  2304.   00076    51         push     ecx
  2305.   00077    e8 00 00 00 00     call     ?CopyIndexedWeights@@YAXPAMK0K@Z ; CopyIndexedWeights
  2306.  
  2307. ; 316  : 
  2308. ; 317  :     // Point 1 - other point on edge shared with another triangle
  2309. ; 318  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+1)%3]);
  2310.  
  2311.   0007c    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2312.   0007f    83 c4 10     add     esp, 16            ; 00000010H
  2313.   00082    6a 03         push     3
  2314.   00084    40         inc     eax
  2315.   00085    59         pop     ecx
  2316.   00086    33 d2         xor     edx, edx
  2317.   00088    f7 f1         div     ecx
  2318.   0008a    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2319.  
  2320. ; 319  : 
  2321. ; 320  :     // second position goes in first texture coord
  2322. ; 321  :     m_cfvf.SetTexCoord(pvDestPoint, 0, cdMesh.PvGetPosition(pvPoint));
  2323.  
  2324.   0008d    8b 7d fc     mov     edi, DWORD PTR _this$[ebp]
  2325.   00090    8b cf         mov     ecx, edi
  2326.   00092    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2327.   00095    0f af b3 c0 00
  2328.     00 00         imul     esi, DWORD PTR [ebx+192]
  2329.   0009c    8b 83 88 00 00
  2330.     00         mov     eax, DWORD PTR [ebx+136]
  2331.   000a2    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2332.   000a6    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2333.   000a9    03 c6         add     eax, esi
  2334.   000ab    50         push     eax
  2335.   000ac    6a 00         push     0
  2336.   000ae    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2337.   000b1    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2338.  
  2339. ; 322  : 
  2340. ; 323  :     // second set of weights go in second texture coord- expand to standard length
  2341. ; 324  :     CopyIndexedWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights() + 1, (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 1), m_cfvf.CWeights());
  2342.  
  2343.   000b6    8b 83 8c 00 00
  2344.     00         mov     eax, DWORD PTR [ebx+140]
  2345.   000bc    85 c0         test     eax, eax
  2346.   000be    8b 57 38     mov     edx, DWORD PTR [edi+56]
  2347.   000c1    75 04         jne     SHORT $L57052
  2348.   000c3    33 c9         xor     ecx, ecx
  2349.   000c5    eb 05         jmp     SHORT $L57053
  2350. $L57052:
  2351.   000c7    0f b6 48 04     movzx     ecx, BYTE PTR [eax+4]
  2352.   000cb    41         inc     ecx
  2353. $L57053:
  2354.   000cc    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2355.   000d0    52         push     edx
  2356.   000d1    8b 57 1c     mov     edx, DWORD PTR [edi+28]
  2357.   000d4    03 55 18     add     edx, DWORD PTR _pvDestPoint$[ebp]
  2358.   000d7    41         inc     ecx
  2359.   000d8    52         push     edx
  2360.   000d9    51         push     ecx
  2361.   000da    03 c6         add     eax, esi
  2362.   000dc    50         push     eax
  2363.   000dd    e8 00 00 00 00     call     ?CopyIndexedWeights@@YAXPAMK0K@Z ; CopyIndexedWeights
  2364.  
  2365. ; 325  : 
  2366. ; 326  :     // Point 2 - point NOT on edge shared with another triangle
  2367. ; 327  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+2)%3]);
  2368.  
  2369.   000e2    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2370.   000e5    83 c4 10     add     esp, 16            ; 00000010H
  2371.   000e8    6a 03         push     3
  2372.   000ea    83 c0 02     add     eax, 2
  2373.   000ed    59         pop     ecx
  2374.   000ee    33 d2         xor     edx, edx
  2375.   000f0    f7 f1         div     ecx
  2376.   000f2    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2377.   000f5    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2378.   000f8    0f af b3 c0 00
  2379.     00 00         imul     esi, DWORD PTR [ebx+192]
  2380.  
  2381. ; 328  : 
  2382. ; 329  :     // third position goes in the third texture coordinate
  2383. ; 330  :     m_cfvf.SetTexCoord(pvDestPoint, 3, cdMesh.PvGetPosition(pvPoint));
  2384.  
  2385.   000ff    8b 83 88 00 00
  2386.     00         mov     eax, DWORD PTR [ebx+136]
  2387.   00105    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2388.   00109    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2389.   0010c    03 c6         add     eax, esi
  2390.   0010e    50         push     eax
  2391.   0010f    51         push     ecx
  2392.   00110    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2393.   00113    8b cf         mov     ecx, edi
  2394.   00115    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2395.  
  2396. ; 331  : 
  2397. ; 332  :     // third set of weights go in fourth texture coord- expand to standard length
  2398. ; 333  :     CopyIndexedWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights() + 1, (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 4), m_cfvf.CWeights());
  2399.  
  2400.   0011a    8b 9b 8c 00 00
  2401.     00         mov     ebx, DWORD PTR [ebx+140]
  2402.   00120    85 db         test     ebx, ebx
  2403.   00122    8b 47 38     mov     eax, DWORD PTR [edi+56]
  2404.   00125    75 04         jne     SHORT $L57075
  2405.   00127    33 c9         xor     ecx, ecx
  2406.   00129    eb 05         jmp     SHORT $L57076
  2407. $L57075:
  2408.   0012b    0f b6 4b 04     movzx     ecx, BYTE PTR [ebx+4]
  2409.   0012f    41         inc     ecx
  2410. $L57076:
  2411.   00130    50         push     eax
  2412.   00131    8b 47 28     mov     eax, DWORD PTR [edi+40]
  2413.   00134    03 45 18     add     eax, DWORD PTR _pvDestPoint$[ebp]
  2414.   00137    41         inc     ecx
  2415.   00138    50         push     eax
  2416.   00139    0f b7 43 02     movzx     eax, WORD PTR [ebx+2]
  2417.   0013d    51         push     ecx
  2418.   0013e    03 c6         add     eax, esi
  2419.   00140    50         push     eax
  2420.   00141    e8 00 00 00 00     call     ?CopyIndexedWeights@@YAXPAMK0K@Z ; CopyIndexedWeights
  2421.   00146    83 c4 10     add     esp, 16            ; 00000010H
  2422.  
  2423. ; 334  : 
  2424. ; 335  : 
  2425. ; 336  :     // the third position should be added in
  2426. ; 337  :     m_cfvf.SetTexCoord(pvDestPoint, 6, &vAvg);
  2427.  
  2428.   00149    8d 45 f0     lea     eax, DWORD PTR _vAvg$[ebp]
  2429.   0014c    50         push     eax
  2430.   0014d    6a 06         push     6
  2431.   0014f    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2432.   00152    8b cf         mov     ecx, edi
  2433.   00154    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2434.  
  2435. ; 338  : 
  2436. ; 339  :     iCurPoint += 1;
  2437.  
  2438.   00159    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2439.   0015c    ff 00         inc     DWORD PTR [eax]
  2440.   0015e    5f         pop     edi
  2441.   0015f    5e         pop     esi
  2442.   00160    5b         pop     ebx
  2443.  
  2444. ; 340  : }
  2445.  
  2446.   00161    c9         leave
  2447.   00162    c2 18 00     ret     24            ; 00000018H
  2448. ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ENDP ; CStripOutline::AppendIndexSkinnedPoint
  2449. _TEXT    ENDS
  2450. PUBLIC    ??_C@_04BEMIBDAE@mTot?$AA@            ; `string'
  2451. PUBLIC    ??_C@_07HHMNENJH@mWorlds?$AA@            ; `string'
  2452. PUBLIC    ??_C@_04JKCKMDGO@vClr?$AA@            ; `string'
  2453. PUBLIC    ?Draw@CStripOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z ; CStripOutline::Draw
  2454. EXTRN    _D3DXMatrixMultiply@12:NEAR
  2455. ;    COMDAT ??_C@_04BEMIBDAE@mTot?$AA@
  2456. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  2457. CONST    SEGMENT
  2458. ??_C@_04BEMIBDAE@mTot?$AA@ DB 'mTot', 00H        ; `string'
  2459. CONST    ENDS
  2460. ;    COMDAT ??_C@_07HHMNENJH@mWorlds?$AA@
  2461. CONST    SEGMENT
  2462. ??_C@_07HHMNENJH@mWorlds?$AA@ DB 'mWorlds', 00H        ; `string'
  2463. CONST    ENDS
  2464. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  2465. CONST    SEGMENT
  2466. ??_C@_04JKCKMDGO@vClr?$AA@ DB 'vClr', 00H        ; `string'
  2467. ; Function compile flags: /Ogs
  2468. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\stripoutline.cpp
  2469. CONST    ENDS
  2470. ;    COMDAT ?Draw@CStripOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z
  2471. _TEXT    SEGMENT
  2472. _matTot$ = -280                        ; size = 64
  2473. _matProj$ = -216                    ; size = 64
  2474. _matView$ = -152                    ; size = 64
  2475. _matWorld$ = -88                    ; size = 64
  2476. _vClr$ = -24                        ; size = 16
  2477. _dwSoftwareMode$ = -8                    ; size = 4
  2478. _bChangedSWMode$ = -4                    ; size = 4
  2479. _cPasses$ = 8                        ; size = 4
  2480. _pDevice$ = 8                        ; size = 4
  2481. _iAttrib$ = 12                        ; size = 4
  2482. _pfxCurrent$ = 16                    ; size = 4
  2483. _pfxSkinnedAdjacency$ = 16                ; size = 4
  2484. tv532 = 20                        ; size = 4
  2485. _pfxColor$ = 20                        ; size = 4
  2486. tv648 = 24                        ; size = 4
  2487. tv647 = 24                        ; size = 4
  2488. tv646 = 24                        ; size = 4
  2489. tv645 = 24                        ; size = 4
  2490. tv472 = 24                        ; size = 4
  2491. _iVertexStart$56718 = 24                ; size = 4
  2492. _iMatrix$ = 24                        ; size = 4
  2493. _dwColor$ = 24                        ; size = 4
  2494. tv681 = 28                        ; size = 4
  2495. _cLinesCur$ = 28                    ; size = 4
  2496. _rgmIndexedMatrices$ = 28                ; size = 4
  2497. _iPass$ = 32                        ; size = 4
  2498. _cIndexedMatrices$ = 32                    ; size = 4
  2499. ?Draw@CStripOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z PROC NEAR ; CStripOutline::Draw, COMDAT
  2500. ; _this$ = ecx
  2501.  
  2502. ; 904  : }
  2503.  
  2504.   00000    8b ff         npad     2
  2505.  
  2506. ; 754  : {
  2507.  
  2508.   00002    55         push     ebp
  2509.   00003    8b ec         mov     ebp, esp
  2510.   00005    81 ec 18 01 00
  2511.     00         sub     esp, 280        ; 00000118H
  2512.  
  2513. ; 755  :     HRESULT hr;
  2514. ; 756  :     LPD3DXEFFECT pfxCurrent;
  2515. ; 757  :     DWORD dwFVF;
  2516. ; 758  :     UINT iPass;
  2517. ; 759  :     UINT cPasses;
  2518. ; 760  :     DWORD cBytesPerVertex;
  2519. ; 761  :     D3DXMATRIX matWorld;
  2520. ; 762  :     D3DXMATRIX matView;
  2521. ; 763  :     D3DXMATRIX matProj;
  2522. ; 764  :     D3DXMATRIX matTot;
  2523. ; 765  :     D3DXCOLOR vClr(dwColor);
  2524.  
  2525.   0000b    8b 45 18     mov     eax, DWORD PTR _dwColor$[ebp]
  2526.   0000e    d9 05 00 00 00
  2527.     00         fld     DWORD PTR __real@3b808081
  2528.   00014    53         push     ebx
  2529.   00015    8b d9         mov     ebx, ecx
  2530.   00017    8b c8         mov     ecx, eax
  2531.   00019    c1 e9 10     shr     ecx, 16            ; 00000010H
  2532.   0001c    0f b6 c9     movzx     ecx, cl
  2533.   0001f    89 4d 18     mov     DWORD PTR tv648[ebp], ecx
  2534.   00022    8b c8         mov     ecx, eax
  2535.   00024    c1 e9 08     shr     ecx, 8
  2536.   00027    db 45 18     fild     DWORD PTR tv648[ebp]
  2537.   0002a    0f b6 c9     movzx     ecx, cl
  2538.   0002d    d8 c9         fmul     ST(0), ST(1)
  2539.   0002f    89 4d 18     mov     DWORD PTR tv647[ebp], ecx
  2540.   00032    0f b6 c8     movzx     ecx, al
  2541.   00035    d9 5d e8     fstp     DWORD PTR _vClr$[ebp]
  2542.   00038    db 45 18     fild     DWORD PTR tv647[ebp]
  2543.   0003b    89 4d 18     mov     DWORD PTR tv646[ebp], ecx
  2544.   0003e    c1 e8 18     shr     eax, 24            ; 00000018H
  2545.   00041    56         push     esi
  2546.   00042    d8 c9         fmul     ST(0), ST(1)
  2547.  
  2548. ; 766  :     DWORD cLines;
  2549. ; 767  :     DWORD cLinesCur;
  2550. ; 768  :     DWORD iVertexStart;
  2551. ; 769  :     BOOL  dwSoftwareMode;
  2552. ; 770  :     BOOL bChangedSWMode = FALSE;
  2553. ; 771  :     DWORD iMatrix;
  2554. ; 772  :     DWORD iSubset;
  2555. ; 773  : 
  2556. ; 774  :     if (m_bSkinning)
  2557.  
  2558.   00044    8b 75 08     mov     esi, DWORD PTR _pDevice$[ebp]
  2559.   00047    57         push     edi
  2560.   00048    d9 5d ec     fstp     DWORD PTR _vClr$[ebp+4]
  2561.   0004b    db 45 18     fild     DWORD PTR tv646[ebp]
  2562.   0004e    89 45 18     mov     DWORD PTR tv645[ebp], eax
  2563.   00051    33 c0         xor     eax, eax
  2564.   00053    39 43 40     cmp     DWORD PTR [ebx+64], eax
  2565.   00056    d8 c9         fmul     ST(0), ST(1)
  2566.   00058    89 45 fc     mov     DWORD PTR _bChangedSWMode$[ebp], eax
  2567.   0005b    d9 5d f0     fstp     DWORD PTR _vClr$[ebp+8]
  2568.   0005e    db 45 18     fild     DWORD PTR tv645[ebp]
  2569.   00061    d8 c9         fmul     ST(0), ST(1)
  2570.   00063    d9 5d f4     fstp     DWORD PTR _vClr$[ebp+12]
  2571.   00066    dd d8         fstp     ST(0)
  2572.   00068    0f 84 1a 02 00
  2573.     00         je     $L56691
  2574.  
  2575. ; 775  :     {
  2576. ; 776  :         if (!m_bIndexSkinning)
  2577. ; 777  :         {
  2578. ; 778  :             // non-indexed skinning setup
  2579. ; 779  :             pfxCurrent = pfxSkinnedAdjacency;
  2580.  
  2581.   0006e    8b 7d 10     mov     edi, DWORD PTR _pfxSkinnedAdjacency$[ebp]
  2582.   00071    39 43 44     cmp     DWORD PTR [ebx+68], eax
  2583.  
  2584. ; 780  :             pfxSkinnedAdjacency->SetTechnique(pfxSkinnedAdjacency->GetTechnique(0));
  2585.  
  2586.   00074    8b 07         mov     eax, DWORD PTR [edi]
  2587.   00076    89 7d 10     mov     DWORD PTR _pfxCurrent$[ebp], edi
  2588.   00079    89 45 18     mov     DWORD PTR tv472[ebp], eax
  2589.   0007c    0f 85 0b 01 00
  2590.     00         jne     $L56692
  2591.   00082    6a 00         push     0
  2592.   00084    57         push     edi
  2593.   00085    ff 50 30     call     DWORD PTR [eax+48]
  2594.   00088    50         push     eax
  2595.   00089    8b 45 18     mov     eax, DWORD PTR tv472[ebp]
  2596.   0008c    57         push     edi
  2597.   0008d    ff 90 f0 00 00
  2598.     00         call     DWORD PTR [eax+240]
  2599.  
  2600. ; 781  : 
  2601. ; 782  :             pDevice->GetTransform(D3DTS_VIEW,&matView);
  2602.  
  2603.   00093    8b 06         mov     eax, DWORD PTR [esi]
  2604.   00095    8d 8d 68 ff ff
  2605.     ff         lea     ecx, DWORD PTR _matView$[ebp]
  2606.   0009b    51         push     ecx
  2607.   0009c    6a 02         push     2
  2608.   0009e    56         push     esi
  2609.   0009f    ff 90 b4 00 00
  2610.     00         call     DWORD PTR [eax+180]
  2611.  
  2612. ; 783  :             pDevice->GetTransform(D3DTS_PROJECTION,&matProj);
  2613.  
  2614.   000a5    8b 06         mov     eax, DWORD PTR [esi]
  2615.   000a7    8d 8d 28 ff ff
  2616.     ff         lea     ecx, DWORD PTR _matProj$[ebp]
  2617.   000ad    51         push     ecx
  2618.   000ae    6a 03         push     3
  2619.   000b0    56         push     esi
  2620.   000b1    ff 90 b4 00 00
  2621.     00         call     DWORD PTR [eax+180]
  2622.  
  2623. ; 784  :             pDevice->GetTransform(D3DTS_WORLD,&matWorld);
  2624.  
  2625.   000b7    8b 06         mov     eax, DWORD PTR [esi]
  2626.   000b9    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2627.   000bc    51         push     ecx
  2628.   000bd    68 00 01 00 00     push     256            ; 00000100H
  2629.   000c2    56         push     esi
  2630.   000c3    ff 90 b4 00 00
  2631.     00         call     DWORD PTR [eax+180]
  2632.  
  2633. ; 785  : 
  2634. ; 786  :             D3DXMatrixMultiply(&matTot,&matView,&matProj);
  2635.  
  2636.   000c9    8d 85 28 ff ff
  2637.     ff         lea     eax, DWORD PTR _matProj$[ebp]
  2638.   000cf    50         push     eax
  2639.   000d0    8d 85 68 ff ff
  2640.     ff         lea     eax, DWORD PTR _matView$[ebp]
  2641.   000d6    50         push     eax
  2642.   000d7    8d 85 e8 fe ff
  2643.     ff         lea     eax, DWORD PTR _matTot$[ebp]
  2644.   000dd    50         push     eax
  2645.   000de    e8 00 00 00 00     call     _D3DXMatrixMultiply@12
  2646.  
  2647. ; 787  :             pfxSkinnedAdjacency->SetMatrix("mTot", &matTot);                       
  2648.  
  2649.   000e3    8b 07         mov     eax, DWORD PTR [edi]
  2650.   000e5    8d 8d e8 fe ff
  2651.     ff         lea     ecx, DWORD PTR _matTot$[ebp]
  2652.   000eb    51         push     ecx
  2653.   000ec    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BEMIBDAE@mTot?$AA@
  2654.   000f1    57         push     edi
  2655.   000f2    ff 90 98 00 00
  2656.     00         call     DWORD PTR [eax+152]
  2657.  
  2658. ; 788  : 
  2659. ; 789  :             pDevice->GetTransform(D3DTS_WORLD,&matWorld);
  2660.  
  2661.   000f8    8b 06         mov     eax, DWORD PTR [esi]
  2662.   000fa    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2663.   000fd    51         push     ecx
  2664.   000fe    68 00 01 00 00     push     256            ; 00000100H
  2665.   00103    56         push     esi
  2666.   00104    ff 90 b4 00 00
  2667.     00         call     DWORD PTR [eax+180]
  2668.  
  2669. ; 790  :             pfxSkinnedAdjacency->SetMatrix("mWd1", &matWorld);                       
  2670.  
  2671.   0010a    8b 07         mov     eax, DWORD PTR [edi]
  2672.   0010c    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2673.   0010f    51         push     ecx
  2674.   00110    68 00 00 00 00     push     OFFSET FLAT:??_C@_04IHCGOIEL@mWd1?$AA@
  2675.   00115    57         push     edi
  2676.   00116    ff 90 98 00 00
  2677.     00         call     DWORD PTR [eax+152]
  2678.  
  2679. ; 791  : 
  2680. ; 792  :             pDevice->GetTransform(D3DTS_WORLD1,&matWorld);
  2681.  
  2682.   0011c    8b 06         mov     eax, DWORD PTR [esi]
  2683.   0011e    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2684.   00121    51         push     ecx
  2685.   00122    68 01 01 00 00     push     257            ; 00000101H
  2686.   00127    56         push     esi
  2687.   00128    ff 90 b4 00 00
  2688.     00         call     DWORD PTR [eax+180]
  2689.  
  2690. ; 793  :             pfxSkinnedAdjacency->SetMatrix("mWd2", &matWorld);                       
  2691.  
  2692.   0012e    8b 07         mov     eax, DWORD PTR [edi]
  2693.   00130    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2694.   00133    51         push     ecx
  2695.   00134    68 00 00 00 00     push     OFFSET FLAT:??_C@_04KMALLLII@mWd2?$AA@
  2696.   00139    57         push     edi
  2697.   0013a    ff 90 98 00 00
  2698.     00         call     DWORD PTR [eax+152]
  2699.  
  2700. ; 794  : 
  2701. ; 795  :             pDevice->GetTransform(D3DTS_WORLD2,&matWorld);
  2702.  
  2703.   00140    8b 06         mov     eax, DWORD PTR [esi]
  2704.   00142    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2705.   00145    51         push     ecx
  2706.   00146    68 02 01 00 00     push     258            ; 00000102H
  2707.   0014b    56         push     esi
  2708.   0014c    ff 90 b4 00 00
  2709.     00         call     DWORD PTR [eax+180]
  2710.  
  2711. ; 796  :             pfxSkinnedAdjacency->SetMatrix("mWd3", &matWorld);                       
  2712.  
  2713.   00152    8b 07         mov     eax, DWORD PTR [edi]
  2714.   00154    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2715.   00157    51         push     ecx
  2716.   00158    68 00 00 00 00     push     OFFSET FLAT:??_C@_04LFBAIKMJ@mWd3?$AA@
  2717.   0015d    57         push     edi
  2718.   0015e    ff 90 98 00 00
  2719.     00         call     DWORD PTR [eax+152]
  2720.  
  2721. ; 797  : 
  2722. ; 798  :             pDevice->GetTransform(D3DTS_WORLD3,&matWorld);
  2723.  
  2724.   00164    8b 06         mov     eax, DWORD PTR [esi]
  2725.   00166    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2726.   00169    51         push     ecx
  2727.   0016a    68 03 01 00 00     push     259            ; 00000103H
  2728.   0016f    56         push     esi
  2729.   00170    ff 90 b4 00 00
  2730.     00         call     DWORD PTR [eax+180]
  2731.  
  2732. ; 799  :             pfxSkinnedAdjacency->SetMatrix("mWd4", &matWorld);        
  2733.  
  2734.   00176    8b 07         mov     eax, DWORD PTR [edi]
  2735.   00178    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  2736.   0017b    51         push     ecx
  2737.   0017c    68 00 00 00 00     push     OFFSET FLAT:??_C@_04PKFBBMAO@mWd4?$AA@
  2738.   00181    57         push     edi
  2739.   00182    ff 90 98 00 00
  2740.     00         call     DWORD PTR [eax+152]
  2741.  
  2742. ; 800  :         }        
  2743. ; 801  :         else  // indexed skinning setup
  2744.  
  2745.   00188    e9 ad 00 00 00     jmp     $L56703
  2746. $L56692:
  2747.  
  2748. ; 802  :         {
  2749. ; 803  :             pfxCurrent = pfxSkinnedAdjacency;
  2750. ; 804  :             pfxSkinnedAdjacency->SetTechnique(pfxSkinnedAdjacency->GetTechnique(1));
  2751.  
  2752.   0018d    6a 01         push     1
  2753.   0018f    57         push     edi
  2754.   00190    ff 50 30     call     DWORD PTR [eax+48]
  2755.   00193    50         push     eax
  2756.   00194    8b 45 18     mov     eax, DWORD PTR tv472[ebp]
  2757.   00197    57         push     edi
  2758.   00198    ff 90 f0 00 00
  2759.     00         call     DWORD PTR [eax+240]
  2760.  
  2761. ; 805  : 
  2762. ; 806  :             pDevice->GetTransform(D3DTS_VIEW,&matView);
  2763.  
  2764.   0019e    8b 06         mov     eax, DWORD PTR [esi]
  2765.   001a0    8d 8d 68 ff ff
  2766.     ff         lea     ecx, DWORD PTR _matView$[ebp]
  2767.   001a6    51         push     ecx
  2768.   001a7    6a 02         push     2
  2769.   001a9    56         push     esi
  2770.   001aa    ff 90 b4 00 00
  2771.     00         call     DWORD PTR [eax+180]
  2772.  
  2773. ; 807  :             pDevice->GetTransform(D3DTS_PROJECTION,&matProj);
  2774.  
  2775.   001b0    8b 06         mov     eax, DWORD PTR [esi]
  2776.   001b2    8d 8d 28 ff ff
  2777.     ff         lea     ecx, DWORD PTR _matProj$[ebp]
  2778.   001b8    51         push     ecx
  2779.   001b9    6a 03         push     3
  2780.   001bb    56         push     esi
  2781.   001bc    ff 90 b4 00 00
  2782.     00         call     DWORD PTR [eax+180]
  2783.  
  2784. ; 808  : 
  2785. ; 809  :             D3DXMatrixMultiply(&matTot,&matView,&matProj);
  2786.  
  2787.   001c2    8d 85 28 ff ff
  2788.     ff         lea     eax, DWORD PTR _matProj$[ebp]
  2789.   001c8    50         push     eax
  2790.   001c9    8d 85 68 ff ff
  2791.     ff         lea     eax, DWORD PTR _matView$[ebp]
  2792.   001cf    50         push     eax
  2793.   001d0    8d 85 e8 fe ff
  2794.     ff         lea     eax, DWORD PTR _matTot$[ebp]
  2795.   001d6    50         push     eax
  2796.   001d7    e8 00 00 00 00     call     _D3DXMatrixMultiply@12
  2797.  
  2798. ; 810  :             pfxSkinnedAdjacency->SetMatrix("mTot", &matTot);                       
  2799.  
  2800.   001dc    8b 07         mov     eax, DWORD PTR [edi]
  2801.   001de    8d 8d e8 fe ff
  2802.     ff         lea     ecx, DWORD PTR _matTot$[ebp]
  2803.   001e4    51         push     ecx
  2804.   001e5    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BEMIBDAE@mTot?$AA@
  2805.   001ea    57         push     edi
  2806.   001eb    ff 90 98 00 00
  2807.     00         call     DWORD PTR [eax+152]
  2808.  
  2809. ; 811  : 
  2810. ; 812  :             pfxSkinnedAdjacency->SetMatrixArray("mWorlds", rgmIndexedMatrices, cIndexedMatrices);
  2811.  
  2812.   001f1    ff 75 20     push     DWORD PTR _cIndexedMatrices$[ebp]
  2813.   001f4    8b 07         mov     eax, DWORD PTR [edi]
  2814.   001f6    ff 75 1c     push     DWORD PTR _rgmIndexedMatrices$[ebp]
  2815.   001f9    68 00 00 00 00     push     OFFSET FLAT:??_C@_07HHMNENJH@mWorlds?$AA@
  2816.   001fe    57         push     edi
  2817.   001ff    ff 90 a0 00 00
  2818.     00         call     DWORD PTR [eax+160]
  2819.  
  2820. ; 813  : 
  2821. ; 814  :             for (iMatrix = 0; iMatrix < cIndexedMatrices; iMatrix++)
  2822.  
  2823.   00205    83 65 18 00     and     DWORD PTR _iMatrix$[ebp], 0
  2824.   00209    83 7d 20 00     cmp     DWORD PTR _cIndexedMatrices$[ebp], 0
  2825.   0020d    76 2b         jbe     SHORT $L56703
  2826.   0020f    8b 45 1c     mov     eax, DWORD PTR _rgmIndexedMatrices$[ebp]
  2827.   00212    89 45 1c     mov     DWORD PTR tv681[ebp], eax
  2828. $L57109:
  2829.  
  2830. ; 815  :             {
  2831. ; 816  :                 pfxSkinnedAdjacency->SetMatrix(x_rgszMatrix[iMatrix], &rgmIndexedMatrices[iMatrix]);
  2832.  
  2833.   00215    ff 75 1c     push     DWORD PTR tv681[ebp]
  2834.   00218    8b 4d 18     mov     ecx, DWORD PTR _iMatrix$[ebp]
  2835.   0021b    ff 34 8d 00 00
  2836.     00 00         push     DWORD PTR _x_rgszMatrix[ecx*4]
  2837.   00222    8b 07         mov     eax, DWORD PTR [edi]
  2838.   00224    57         push     edi
  2839.   00225    ff 90 98 00 00
  2840.     00         call     DWORD PTR [eax+152]
  2841.   0022b    ff 45 18     inc     DWORD PTR _iMatrix$[ebp]
  2842.   0022e    8b 45 18     mov     eax, DWORD PTR _iMatrix$[ebp]
  2843.   00231    83 45 1c 40     add     DWORD PTR tv681[ebp], 64 ; 00000040H
  2844.   00235    3b 45 20     cmp     eax, DWORD PTR _cIndexedMatrices$[ebp]
  2845.   00238    72 db         jb     SHORT $L57109
  2846. $L56703:
  2847.  
  2848. ; 817  :             }
  2849. ; 818  :         }
  2850. ; 819  : 
  2851. ; 820  :         pfxSkinnedAdjacency->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  2852.  
  2853.   0023a    8b 07         mov     eax, DWORD PTR [edi]
  2854.   0023c    8d 4d e8     lea     ecx, DWORD PTR _vClr$[ebp]
  2855.   0023f    51         push     ecx
  2856.   00240    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  2857.   00245    57         push     edi
  2858.   00246    ff 90 88 00 00
  2859.     00         call     DWORD PTR [eax+136]
  2860.  
  2861. ; 821  : 
  2862. ; 822  :         dwSoftwareMode = pDevice->GetSoftwareVertexProcessing();
  2863.  
  2864.   0024c    8b 06         mov     eax, DWORD PTR [esi]
  2865.   0024e    56         push     esi
  2866.   0024f    ff 90 38 01 00
  2867.     00         call     DWORD PTR [eax+312]
  2868.  
  2869. ; 823  :         if (!m_bHWVertexShaders)
  2870.  
  2871.   00255    83 7b 48 00     cmp     DWORD PTR [ebx+72], 0
  2872.   00259    89 45 f8     mov     DWORD PTR _dwSoftwareMode$[ebp], eax
  2873.   0025c    75 12         jne     SHORT $L56706
  2874.  
  2875. ; 824  :         {
  2876. ; 825  :             bChangedSWMode = TRUE;
  2877. ; 826  :             pDevice->SetSoftwareVertexProcessing(TRUE);
  2878.  
  2879.   0025e    8b 0e         mov     ecx, DWORD PTR [esi]
  2880.   00260    33 c0         xor     eax, eax
  2881.   00262    40         inc     eax
  2882.   00263    50         push     eax
  2883.   00264    56         push     esi
  2884.   00265    89 45 fc     mov     DWORD PTR _bChangedSWMode$[ebp], eax
  2885.   00268    ff 91 34 01 00
  2886.     00         call     DWORD PTR [ecx+308]
  2887.  
  2888. ; 827  :         }
  2889. ; 828  :         // if in the wrong mode, then switch
  2890. ; 829  :         else if (dwSoftwareMode && m_bHWVertexShaders)
  2891.  
  2892.   0026e    eb 30         jmp     SHORT $L57110
  2893. $L56706:
  2894.   00270    85 c0         test     eax, eax
  2895.   00272    74 2c         je     SHORT $L57110
  2896.  
  2897. ; 830  :         {
  2898. ; 831  :             bChangedSWMode = TRUE;
  2899. ; 832  :             pDevice->SetSoftwareVertexProcessing(FALSE);
  2900.  
  2901.   00274    8b 06         mov     eax, DWORD PTR [esi]
  2902.   00276    6a 00         push     0
  2903.   00278    56         push     esi
  2904.   00279    c7 45 fc 01 00
  2905.     00 00         mov     DWORD PTR _bChangedSWMode$[ebp], 1
  2906.   00280    ff 90 34 01 00
  2907.     00         call     DWORD PTR [eax+308]
  2908.  
  2909. ; 833  :         }
  2910. ; 834  :     }
  2911. ; 835  :     else
  2912.  
  2913.   00286    eb 18         jmp     SHORT $L57110
  2914. $L56691:
  2915.  
  2916. ; 836  :     {
  2917. ; 837  :         pfxCurrent = pfxColor;
  2918.  
  2919.   00288    8b 45 14     mov     eax, DWORD PTR _pfxColor$[ebp]
  2920.  
  2921. ; 838  : 
  2922. ; 839  :         pfxCurrent->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  2923.  
  2924.   0028b    8b 08         mov     ecx, DWORD PTR [eax]
  2925.   0028d    8d 55 e8     lea     edx, DWORD PTR _vClr$[ebp]
  2926.   00290    52         push     edx
  2927.   00291    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  2928.   00296    50         push     eax
  2929.   00297    89 45 10     mov     DWORD PTR _pfxCurrent$[ebp], eax
  2930.   0029a    ff 91 88 00 00
  2931.     00         call     DWORD PTR [ecx+136]
  2932. $L57110:
  2933.  
  2934. ; 840  :     }
  2935. ; 841  : 
  2936. ; 842  : 
  2937. ; 843  :     if ((iAttrib < m_caeAttributeTable) && (m_rgaeAttributeTable[iAttrib].AttribId == iAttrib))
  2938.  
  2939.   002a0    8b 7b 58     mov     edi, DWORD PTR [ebx+88]
  2940.   002a3    8b 4d 0c     mov     ecx, DWORD PTR _iAttrib$[ebp]
  2941.   002a6    3b cf         cmp     ecx, edi
  2942.   002a8    73 0f         jae     SHORT $L56711
  2943.   002aa    8b 53 54     mov     edx, DWORD PTR [ebx+84]
  2944.   002ad    8d 04 89     lea     eax, DWORD PTR [ecx+ecx*4]
  2945.   002b0    39 0c 82     cmp     DWORD PTR [edx+eax*4], ecx
  2946.   002b3    75 04         jne     SHORT $L56711
  2947.  
  2948. ; 844  :     {
  2949. ; 845  :         iSubset = iAttrib;
  2950.  
  2951.   002b5    8b c1         mov     eax, ecx
  2952.  
  2953. ; 846  :     }
  2954. ; 847  :     else
  2955.  
  2956.   002b7    eb 15         jmp     SHORT $L57115
  2957. $L56711:
  2958.  
  2959. ; 848  :     {
  2960. ; 849  :         // look for the correct attribute table entry to draw
  2961. ; 850  :         for (iSubset = 0; iSubset < m_caeAttributeTable; iSubset++)
  2962.  
  2963.   002b9    33 c0         xor     eax, eax
  2964.   002bb    85 ff         test     edi, edi
  2965.   002bd    76 0f         jbe     SHORT $L57115
  2966.   002bf    8b 53 54     mov     edx, DWORD PTR [ebx+84]
  2967. $L57114:
  2968.  
  2969. ; 851  :         {
  2970. ; 852  :             if (m_rgaeAttributeTable[iSubset].AttribId == iAttrib)
  2971.  
  2972.   002c2    39 0a         cmp     DWORD PTR [edx], ecx
  2973.   002c4    74 08         je     SHORT $L57115
  2974.   002c6    40         inc     eax
  2975.   002c7    83 c2 14     add     edx, 20            ; 00000014H
  2976.   002ca    3b c7         cmp     eax, edi
  2977.   002cc    72 f4         jb     SHORT $L57114
  2978. $L57115:
  2979.  
  2980. ; 853  :             {
  2981. ; 854  :                 break;
  2982. ; 855  :             }
  2983. ; 856  :         }
  2984. ; 857  :     }
  2985. ; 858  : 
  2986. ; 859  :     if (iSubset < m_caeAttributeTable)
  2987.  
  2988.   002ce    3b c7         cmp     eax, edi
  2989.   002d0    0f 83 d4 00 00
  2990.     00         jae     $L57113
  2991.  
  2992. ; 860  :     {
  2993. ; 861  :         DWORD iVertexStart;
  2994. ; 862  :         if (m_rgaeAttributeTable[iSubset].FaceCount > 0)
  2995.  
  2996.   002d6    8d 3c 80     lea     edi, DWORD PTR [eax+eax*4]
  2997.   002d9    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  2998.   002dc    c1 e7 02     shl     edi, 2
  2999.   002df    83 7c 07 08 00     cmp     DWORD PTR [edi+eax+8], 0
  3000.   002e4    89 7d 14     mov     DWORD PTR tv532[ebp], edi
  3001.   002e7    0f 86 bd 00 00
  3002.     00         jbe     $L57113
  3003.  
  3004. ; 863  :         {
  3005. ; 864  :             pfxCurrent->Begin(&cPasses, 0);
  3006.  
  3007.   002ed    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  3008.   002f0    8b 08         mov     ecx, DWORD PTR [eax]
  3009.   002f2    6a 00         push     0
  3010.   002f4    8d 55 08     lea     edx, DWORD PTR _cPasses$[ebp]
  3011.   002f7    52         push     edx
  3012.   002f8    50         push     eax
  3013.   002f9    ff 91 04 01 00
  3014.     00         call     DWORD PTR [ecx+260]
  3015.  
  3016. ; 865  : 
  3017. ; 866  :             for (iPass = 0; iPass < cPasses; iPass++)
  3018.  
  3019.   002ff    83 65 20 00     and     DWORD PTR _iPass$[ebp], 0
  3020.   00303    83 7d 08 00     cmp     DWORD PTR _cPasses$[ebp], 0
  3021.   00307    0f 86 91 00 00
  3022.     00         jbe     $L56722
  3023.   0030d    eb 03         jmp     SHORT $L56720
  3024. $L57111:
  3025.   0030f    8b 7d 14     mov     edi, DWORD PTR tv532[ebp]
  3026. $L56720:
  3027.  
  3028. ; 867  :             {
  3029. ; 868  :                 pDevice->SetVertexDeclaration(m_pDecl);
  3030.  
  3031.   00312    ff 73 50     push     DWORD PTR [ebx+80]
  3032.   00315    8b 06         mov     eax, DWORD PTR [esi]
  3033.   00317    56         push     esi
  3034.   00318    ff 90 5c 01 00
  3035.     00         call     DWORD PTR [eax+348]
  3036.  
  3037. ; 869  : 
  3038. ; 870  :                 pfxCurrent->BeginPass(iPass);
  3039.  
  3040.   0031e    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  3041.   00321    ff 75 20     push     DWORD PTR _iPass$[ebp]
  3042.   00324    8b 08         mov     ecx, DWORD PTR [eax]
  3043.   00326    50         push     eax
  3044.   00327    ff 91 08 01 00
  3045.     00         call     DWORD PTR [ecx+264]
  3046.  
  3047. ; 871  : 
  3048. ; 872  :                 pDevice->SetStreamSource(0, m_pVertexBuffer, 0, m_cfvf.m_cBytesPerVertex);
  3049.  
  3050.   0032d    ff 73 04     push     DWORD PTR [ebx+4]
  3051.   00330    8b 06         mov     eax, DWORD PTR [esi]
  3052.   00332    6a 00         push     0
  3053.   00334    ff 73 4c     push     DWORD PTR [ebx+76]
  3054.   00337    6a 00         push     0
  3055.   00339    56         push     esi
  3056.   0033a    ff 90 90 01 00
  3057.     00         call     DWORD PTR [eax+400]
  3058.  
  3059. ; 873  : 
  3060. ; 874  :                 iVertexStart = m_rgaeAttributeTable[iSubset].VertexStart;
  3061.  
  3062.   00340    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  3063.   00343    03 c7         add     eax, edi
  3064.  
  3065. ; 875  :                 cLines = m_rgaeAttributeTable[iSubset].VertexCount / 2;
  3066.  
  3067.   00345    8b 78 10     mov     edi, DWORD PTR [eax+16]
  3068.   00348    8b 48 0c     mov     ecx, DWORD PTR [eax+12]
  3069.   0034b    d1 ef         shr     edi, 1
  3070.   0034d    eb 2f         jmp     SHORT $L57116
  3071. $L56724:
  3072.  
  3073. ; 878  :                 {
  3074. ; 879  :                     cLinesCur = min(cLines, (0xffff / 2));
  3075.  
  3076.   0034f    b8 ff 7f 00 00     mov     eax, 32767        ; 00007fffH
  3077.   00354    3b f8         cmp     edi, eax
  3078.   00356    89 7d 1c     mov     DWORD PTR _cLinesCur$[ebp], edi
  3079.   00359    72 03         jb     SHORT $L57082
  3080.   0035b    89 45 1c     mov     DWORD PTR _cLinesCur$[ebp], eax
  3081. $L57082:
  3082.  
  3083. ; 880  : 
  3084. ; 881  :                     hr = pDevice->DrawPrimitive(D3DPT_LINELIST, 
  3085. ; 882  :                                                  iVertexStart, 
  3086. ; 883  :                                                  cLinesCur);
  3087.  
  3088.   0035e    ff 75 1c     push     DWORD PTR _cLinesCur$[ebp]
  3089.   00361    8b 06         mov     eax, DWORD PTR [esi]
  3090.   00363    ff 75 18     push     DWORD PTR _iVertexStart$56718[ebp]
  3091.   00366    6a 02         push     2
  3092.   00368    56         push     esi
  3093.   00369    ff 90 44 01 00
  3094.     00         call     DWORD PTR [eax+324]
  3095.  
  3096. ; 884  :                     if (FAILED(hr))
  3097.  
  3098.   0036f    85 c0         test     eax, eax
  3099.   00371    7c 4b         jl     SHORT $L56672
  3100.  
  3101. ; 885  :                         return hr;
  3102. ; 886  : 
  3103. ; 887  :                     iVertexStart += cLinesCur * 2;
  3104.  
  3105.   00373    8b 45 1c     mov     eax, DWORD PTR _cLinesCur$[ebp]
  3106.   00376    8b 4d 18     mov     ecx, DWORD PTR _iVertexStart$56718[ebp]
  3107.   00379    8d 0c 41     lea     ecx, DWORD PTR [ecx+eax*2]
  3108.  
  3109. ; 888  :                     cLines -= cLinesCur;
  3110.  
  3111.   0037c    2b f8         sub     edi, eax
  3112. $L57116:
  3113.  
  3114. ; 885  :                         return hr;
  3115. ; 886  : 
  3116. ; 887  :                     iVertexStart += cLinesCur * 2;
  3117.  
  3118.   0037e    89 4d 18     mov     DWORD PTR _iVertexStart$56718[ebp], ecx
  3119.  
  3120. ; 876  : 
  3121. ; 877  :                 while (cLines > 0)
  3122.  
  3123.   00381    75 cc         jne     SHORT $L56724
  3124.  
  3125. ; 889  :                 }
  3126. ; 890  : 
  3127. ; 891  :                 pfxCurrent->EndPass();
  3128.  
  3129.   00383    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  3130.   00386    8b 08         mov     ecx, DWORD PTR [eax]
  3131.   00388    50         push     eax
  3132.   00389    ff 91 10 01 00
  3133.     00         call     DWORD PTR [ecx+272]
  3134.   0038f    ff 45 20     inc     DWORD PTR _iPass$[ebp]
  3135.   00392    8b 45 20     mov     eax, DWORD PTR _iPass$[ebp]
  3136.   00395    3b 45 08     cmp     eax, DWORD PTR _cPasses$[ebp]
  3137.   00398    0f 82 71 ff ff
  3138.     ff         jb     $L57111
  3139. $L56722:
  3140.  
  3141. ; 892  :             }
  3142. ; 893  : 
  3143. ; 894  :             pfxCurrent->End();
  3144.  
  3145.   0039e    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  3146.   003a1    8b 08         mov     ecx, DWORD PTR [eax]
  3147.   003a3    50         push     eax
  3148.   003a4    ff 91 14 01 00
  3149.     00         call     DWORD PTR [ecx+276]
  3150. $L57113:
  3151.  
  3152. ; 895  :         }
  3153. ; 896  :     }
  3154. ; 897  : 
  3155. ; 898  :     if (bChangedSWMode)
  3156.  
  3157.   003aa    83 7d fc 00     cmp     DWORD PTR _bChangedSWMode$[ebp], 0
  3158.   003ae    74 0c         je     SHORT $L56728
  3159.  
  3160. ; 899  :     {
  3161. ; 900  :         pDevice->SetSoftwareVertexProcessing(dwSoftwareMode);
  3162.  
  3163.   003b0    ff 75 f8     push     DWORD PTR _dwSoftwareMode$[ebp]
  3164.   003b3    8b 06         mov     eax, DWORD PTR [esi]
  3165.   003b5    56         push     esi
  3166.   003b6    ff 90 34 01 00
  3167.     00         call     DWORD PTR [eax+308]
  3168. $L56728:
  3169.  
  3170. ; 901  :     }
  3171. ; 902  : 
  3172. ; 903  :     return S_OK;
  3173.  
  3174.   003bc    33 c0         xor     eax, eax
  3175. $L56672:
  3176.   003be    5f         pop     edi
  3177.   003bf    5e         pop     esi
  3178.   003c0    5b         pop     ebx
  3179.  
  3180. ; 904  : }
  3181.  
  3182.   003c1    c9         leave
  3183.   003c2    c2 1c 00     ret     28            ; 0000001cH
  3184. ?Draw@CStripOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z ENDP ; CStripOutline::Draw
  3185. _TEXT    ENDS
  3186. PUBLIC    ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendSkinnedMidpoint
  3187. ; Function compile flags: /Ogs
  3188. ;    COMDAT ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z
  3189. _TEXT    SEGMENT
  3190. _vMidPoint$ = -20                    ; size = 12
  3191. _this$ = -8                        ; size = 4
  3192. _iEdge$ = -4                        ; size = 4
  3193. _cdMesh$ = 8                        ; size = 4
  3194. tv162 = 12                        ; size = 4
  3195. _pwFace1$ = 12                        ; size = 4
  3196. _pwFace2$ = 16                        ; size = 4
  3197. _pvMeshPoints$ = 20                    ; size = 4
  3198. _pvLinePoints$ = 24                    ; size = 4
  3199. _iCurPoint$ = 28                    ; size = 4
  3200. ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z PROC NEAR ; CStripOutline::AppendSkinnedMidpoint, COMDAT
  3201. ; _this$ = ecx
  3202.  
  3203. ; 198  : }
  3204.  
  3205.   00000    8b ff         npad     2
  3206.  
  3207. ; 170  : {
  3208.  
  3209.   00002    55         push     ebp
  3210.   00003    8b ec         mov     ebp, esp
  3211.   00005    83 ec 14     sub     esp, 20            ; 00000014H
  3212.  
  3213. ; 171  :     PBYTE pvDestPoint;
  3214. ; 172  :     D3DXVECTOR3 vMidPoint(0.5f, 0.5f, 0.0f);
  3215.  
  3216.   00008    d9 05 00 00 00
  3217.     00         fld     DWORD PTR __real@3f000000
  3218.  
  3219. ; 173  :     DWORD iPoint1;
  3220. ; 174  :     DWORD iPoint2;
  3221. ; 175  :     DWORD iEdge = UNUSED32;
  3222.  
  3223.   0000e    83 4d fc ff     or     DWORD PTR _iEdge$[ebp], -1
  3224.   00012    d9 55 ec     fst     DWORD PTR _vMidPoint$[ebp]
  3225.   00015    53         push     ebx
  3226.   00016    d9 5d f0     fstp     DWORD PTR _vMidPoint$[ebp+4]
  3227.   00019    56         push     esi
  3228.   0001a    d9 ee         fldz
  3229.   0001c    57         push     edi
  3230.  
  3231. ; 176  : 
  3232. ; 177  :     GXASSERT(BConnected(pwFace1, pwFace2));
  3233. ; 178  : 
  3234. ; 179  :     // find the edge connecting the two faces
  3235. ; 180  :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  3236.  
  3237.   0001d    8b 7d 0c     mov     edi, DWORD PTR _pwFace1$[ebp]
  3238.   00020    d9 5d f4     fstp     DWORD PTR _vMidPoint$[ebp+8]
  3239.   00023    89 4d f8     mov     DWORD PTR _this$[ebp], ecx
  3240.   00026    33 f6         xor     esi, esi
  3241. $L57129:
  3242.  
  3243. ; 181  :     {
  3244. ; 182  :         for (iPoint2 = 0; iPoint2 < 3; iPoint2++)
  3245.  
  3246.   00028    33 c9         xor     ecx, ecx
  3247. $L56390:
  3248.  
  3249. ; 183  :         {
  3250. ; 184  :             if ((pwFace1[iPoint1] == pwFace2[(iPoint2+1)%3]) && (pwFace1[(iPoint1+1)%3] == pwFace2[iPoint2]))
  3251.  
  3252.   0002a    8d 41 01     lea     eax, DWORD PTR [ecx+1]
  3253.   0002d    6a 03         push     3
  3254.   0002f    33 d2         xor     edx, edx
  3255.   00031    5b         pop     ebx
  3256.   00032    89 45 0c     mov     DWORD PTR tv162[ebp], eax
  3257.   00035    f7 f3         div     ebx
  3258.   00037    8b 04 b7     mov     eax, DWORD PTR [edi+esi*4]
  3259.   0003a    8b 5d 10     mov     ebx, DWORD PTR _pwFace2$[ebp]
  3260.   0003d    3b 04 93     cmp     eax, DWORD PTR [ebx+edx*4]
  3261.   00040    75 15         jne     SHORT $L56391
  3262.   00042    33 d2         xor     edx, edx
  3263.   00044    6a 03         push     3
  3264.   00046    8d 46 01     lea     eax, DWORD PTR [esi+1]
  3265.   00049    5b         pop     ebx
  3266.   0004a    f7 f3         div     ebx
  3267.   0004c    8b 04 97     mov     eax, DWORD PTR [edi+edx*4]
  3268.   0004f    8b 55 10     mov     edx, DWORD PTR _pwFace2$[ebp]
  3269.   00052    3b 04 8a     cmp     eax, DWORD PTR [edx+ecx*4]
  3270.   00055    74 0a         je     SHORT $L57126
  3271. $L56391:
  3272.  
  3273. ; 181  :     {
  3274. ; 182  :         for (iPoint2 = 0; iPoint2 < 3; iPoint2++)
  3275.  
  3276.   00057    8b 4d 0c     mov     ecx, DWORD PTR tv162[ebp]
  3277.   0005a    83 f9 03     cmp     ecx, 3
  3278.   0005d    72 cb         jb     SHORT $L56390
  3279.  
  3280. ; 183  :         {
  3281. ; 184  :             if ((pwFace1[iPoint1] == pwFace2[(iPoint2+1)%3]) && (pwFace1[(iPoint1+1)%3] == pwFace2[iPoint2]))
  3282.  
  3283.   0005f    eb 03         jmp     SHORT $L56388
  3284. $L57126:
  3285.  
  3286. ; 185  :             {
  3287. ; 186  :                 iEdge = iPoint1;
  3288.  
  3289.   00061    89 75 fc     mov     DWORD PTR _iEdge$[ebp], esi
  3290. $L56388:
  3291.  
  3292. ; 176  : 
  3293. ; 177  :     GXASSERT(BConnected(pwFace1, pwFace2));
  3294. ; 178  : 
  3295. ; 179  :     // find the edge connecting the two faces
  3296. ; 180  :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  3297.  
  3298.   00064    46         inc     esi
  3299.   00065    83 fe 03     cmp     esi, 3
  3300.   00068    72 be         jb     SHORT $L57129
  3301.  
  3302. ; 187  :                 break;
  3303. ; 188  :             }
  3304. ; 189  :         }
  3305. ; 190  :     }
  3306. ; 191  : 
  3307. ; 192  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  3308.  
  3309.   0006a    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  3310.   0006d    8b 5d f8     mov     ebx, DWORD PTR _this$[ebp]
  3311.   00070    8b 73 04     mov     esi, DWORD PTR [ebx+4]
  3312.   00073    0f af 30     imul     esi, DWORD PTR [eax]
  3313.   00076    03 75 18     add     esi, DWORD PTR _pvLinePoints$[ebp]
  3314.  
  3315. ; 193  : 
  3316. ; 194  :     AppendSkinnedPoint(cdMesh, pwFace1, iEdge, pvMeshPoints, pvLinePoints, iCurPoint);
  3317.  
  3318.   00079    50         push     eax
  3319.   0007a    ff 75 18     push     DWORD PTR _pvLinePoints$[ebp]
  3320.   0007d    8b cb         mov     ecx, ebx
  3321.   0007f    ff 75 14     push     DWORD PTR _pvMeshPoints$[ebp]
  3322.   00082    ff 75 fc     push     DWORD PTR _iEdge$[ebp]
  3323.   00085    57         push     edi
  3324.   00086    ff 75 08     push     DWORD PTR _cdMesh$[ebp]
  3325.   00089    e8 00 00 00 00     call     ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendSkinnedPoint
  3326.  
  3327. ; 195  : 
  3328. ; 196  :     // the third position should be ignored!
  3329. ; 197  :     m_cfvf.SetTexCoord(pvDestPoint, 4, &vMidPoint);
  3330.  
  3331.   0008e    8d 45 ec     lea     eax, DWORD PTR _vMidPoint$[ebp]
  3332.   00091    50         push     eax
  3333.   00092    6a 04         push     4
  3334.   00094    56         push     esi
  3335.   00095    8b cb         mov     ecx, ebx
  3336.   00097    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  3337.   0009c    5f         pop     edi
  3338.   0009d    5e         pop     esi
  3339.   0009e    5b         pop     ebx
  3340.  
  3341. ; 198  : }
  3342.  
  3343.   0009f    c9         leave
  3344.   000a0    c2 18 00     ret     24            ; 00000018H
  3345. ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ENDP ; CStripOutline::AppendSkinnedMidpoint
  3346. _TEXT    ENDS
  3347. PUBLIC    ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendIndexSkinnedMidpoint
  3348. ; Function compile flags: /Ogs
  3349. ;    COMDAT ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z
  3350. _TEXT    SEGMENT
  3351. _vMidPoint$ = -20                    ; size = 12
  3352. _this$ = -8                        ; size = 4
  3353. _iEdge$ = -4                        ; size = 4
  3354. _cdMesh$ = 8                        ; size = 4
  3355. tv162 = 12                        ; size = 4
  3356. _pwFace1$ = 12                        ; size = 4
  3357. _pwFace2$ = 16                        ; size = 4
  3358. _pvMeshPoints$ = 20                    ; size = 4
  3359. _pvLinePoints$ = 24                    ; size = 4
  3360. _iCurPoint$ = 28                    ; size = 4
  3361. ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z PROC NEAR ; CStripOutline::AppendIndexSkinnedMidpoint, COMDAT
  3362. ; _this$ = ecx
  3363.  
  3364. ; 289  : }
  3365.  
  3366.   00000    8b ff         npad     2
  3367.  
  3368. ; 261  : {
  3369.  
  3370.   00002    55         push     ebp
  3371.   00003    8b ec         mov     ebp, esp
  3372.   00005    83 ec 14     sub     esp, 20            ; 00000014H
  3373.  
  3374. ; 262  :     PBYTE pvDestPoint;
  3375. ; 263  :     D3DXVECTOR3 vMidPoint(0.5f, 0.5f, 0.0f);
  3376.  
  3377.   00008    d9 05 00 00 00
  3378.     00         fld     DWORD PTR __real@3f000000
  3379.  
  3380. ; 264  :     DWORD iPoint1;
  3381. ; 265  :     DWORD iPoint2;
  3382. ; 266  :     DWORD iEdge = UNUSED32;
  3383.  
  3384.   0000e    83 4d fc ff     or     DWORD PTR _iEdge$[ebp], -1
  3385.   00012    d9 55 ec     fst     DWORD PTR _vMidPoint$[ebp]
  3386.   00015    53         push     ebx
  3387.   00016    d9 5d f0     fstp     DWORD PTR _vMidPoint$[ebp+4]
  3388.   00019    56         push     esi
  3389.   0001a    d9 ee         fldz
  3390.   0001c    57         push     edi
  3391.  
  3392. ; 267  : 
  3393. ; 268  :     GXASSERT(BConnected(pwFace1, pwFace2));
  3394. ; 269  : 
  3395. ; 270  :     // find the edge connecting the two faces
  3396. ; 271  :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  3397.  
  3398.   0001d    8b 7d 0c     mov     edi, DWORD PTR _pwFace1$[ebp]
  3399.   00020    d9 5d f4     fstp     DWORD PTR _vMidPoint$[ebp+8]
  3400.   00023    89 4d f8     mov     DWORD PTR _this$[ebp], ecx
  3401.   00026    33 f6         xor     esi, esi
  3402. $L57142:
  3403.  
  3404. ; 272  :     {
  3405. ; 273  :         for (iPoint2 = 0; iPoint2 < 3; iPoint2++)
  3406.  
  3407.   00028    33 c9         xor     ecx, ecx
  3408. $L56426:
  3409.  
  3410. ; 274  :         {
  3411. ; 275  :             if ((pwFace1[iPoint1] == pwFace2[(iPoint2+1)%3]) && (pwFace1[(iPoint1+1)%3] == pwFace2[iPoint2]))
  3412.  
  3413.   0002a    8d 41 01     lea     eax, DWORD PTR [ecx+1]
  3414.   0002d    6a 03         push     3
  3415.   0002f    33 d2         xor     edx, edx
  3416.   00031    5b         pop     ebx
  3417.   00032    89 45 0c     mov     DWORD PTR tv162[ebp], eax
  3418.   00035    f7 f3         div     ebx
  3419.   00037    8b 04 b7     mov     eax, DWORD PTR [edi+esi*4]
  3420.   0003a    8b 5d 10     mov     ebx, DWORD PTR _pwFace2$[ebp]
  3421.   0003d    3b 04 93     cmp     eax, DWORD PTR [ebx+edx*4]
  3422.   00040    75 15         jne     SHORT $L56427
  3423.   00042    33 d2         xor     edx, edx
  3424.   00044    6a 03         push     3
  3425.   00046    8d 46 01     lea     eax, DWORD PTR [esi+1]
  3426.   00049    5b         pop     ebx
  3427.   0004a    f7 f3         div     ebx
  3428.   0004c    8b 04 97     mov     eax, DWORD PTR [edi+edx*4]
  3429.   0004f    8b 55 10     mov     edx, DWORD PTR _pwFace2$[ebp]
  3430.   00052    3b 04 8a     cmp     eax, DWORD PTR [edx+ecx*4]
  3431.   00055    74 0a         je     SHORT $L57139
  3432. $L56427:
  3433.  
  3434. ; 272  :     {
  3435. ; 273  :         for (iPoint2 = 0; iPoint2 < 3; iPoint2++)
  3436.  
  3437.   00057    8b 4d 0c     mov     ecx, DWORD PTR tv162[ebp]
  3438.   0005a    83 f9 03     cmp     ecx, 3
  3439.   0005d    72 cb         jb     SHORT $L56426
  3440.  
  3441. ; 274  :         {
  3442. ; 275  :             if ((pwFace1[iPoint1] == pwFace2[(iPoint2+1)%3]) && (pwFace1[(iPoint1+1)%3] == pwFace2[iPoint2]))
  3443.  
  3444.   0005f    eb 03         jmp     SHORT $L56424
  3445. $L57139:
  3446.  
  3447. ; 276  :             {
  3448. ; 277  :                 iEdge = iPoint1;
  3449.  
  3450.   00061    89 75 fc     mov     DWORD PTR _iEdge$[ebp], esi
  3451. $L56424:
  3452.  
  3453. ; 267  : 
  3454. ; 268  :     GXASSERT(BConnected(pwFace1, pwFace2));
  3455. ; 269  : 
  3456. ; 270  :     // find the edge connecting the two faces
  3457. ; 271  :     for (iPoint1 = 0; iPoint1 < 3; iPoint1++)
  3458.  
  3459.   00064    46         inc     esi
  3460.   00065    83 fe 03     cmp     esi, 3
  3461.   00068    72 be         jb     SHORT $L57142
  3462.  
  3463. ; 278  :                 break;
  3464. ; 279  :             }
  3465. ; 280  :         }
  3466. ; 281  :     }
  3467. ; 282  : 
  3468. ; 283  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  3469.  
  3470.   0006a    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  3471.   0006d    8b 5d f8     mov     ebx, DWORD PTR _this$[ebp]
  3472.   00070    8b 73 04     mov     esi, DWORD PTR [ebx+4]
  3473.   00073    0f af 30     imul     esi, DWORD PTR [eax]
  3474.   00076    03 75 18     add     esi, DWORD PTR _pvLinePoints$[ebp]
  3475.  
  3476. ; 284  : 
  3477. ; 285  :     AppendIndexSkinnedPoint(cdMesh, pwFace1, iEdge, pvMeshPoints, pvLinePoints, iCurPoint);
  3478.  
  3479.   00079    50         push     eax
  3480.   0007a    ff 75 18     push     DWORD PTR _pvLinePoints$[ebp]
  3481.   0007d    8b cb         mov     ecx, ebx
  3482.   0007f    ff 75 14     push     DWORD PTR _pvMeshPoints$[ebp]
  3483.   00082    ff 75 fc     push     DWORD PTR _iEdge$[ebp]
  3484.   00085    57         push     edi
  3485.   00086    ff 75 08     push     DWORD PTR _cdMesh$[ebp]
  3486.   00089    e8 00 00 00 00     call     ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendIndexSkinnedPoint
  3487.  
  3488. ; 286  : 
  3489. ; 287  :     // the third position should be ignored!
  3490. ; 288  :     m_cfvf.SetTexCoord(pvDestPoint, 6, &vMidPoint);
  3491.  
  3492.   0008e    8d 45 ec     lea     eax, DWORD PTR _vMidPoint$[ebp]
  3493.   00091    50         push     eax
  3494.   00092    6a 06         push     6
  3495.   00094    56         push     esi
  3496.   00095    8b cb         mov     ecx, ebx
  3497.   00097    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  3498.   0009c    5f         pop     edi
  3499.   0009d    5e         pop     esi
  3500.   0009e    5b         pop     ebx
  3501.  
  3502. ; 289  : }
  3503.  
  3504.   0009f    c9         leave
  3505.   000a0    c2 18 00     ret     24            ; 00000018H
  3506. ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ENDP ; CStripOutline::AppendIndexSkinnedMidpoint
  3507. _TEXT    ENDS
  3508. PUBLIC    ?Init@CStripOutline@@QAEJPAUID3DXBaseMesh@@@Z    ; CStripOutline::Init
  3509. EXTRN    ??2@YAPAXI@Z:NEAR                ; operator new
  3510. EXTRN    _D3DXDeclaratorFromFVF@8:NEAR
  3511. ; Function compile flags: /Ogs
  3512. ;    COMDAT ?Init@CStripOutline@@QAEJPAUID3DXBaseMesh@@@Z
  3513. _TEXT    SEGMENT
  3514. _Caps$ = -1160                        ; size = 304
  3515. _pDecl$ = -856                        ; size = 520
  3516. $T57148 = -336                        ; size = 64
  3517. _cdMesh$ = -272                        ; size = 196
  3518. _cConnections$ = -76                    ; size = 4
  3519. _iattr$ = -72                        ; size = 4
  3520. _rgwFaces$ = -68                    ; size = 4
  3521. tv1394 = -64                        ; size = 4
  3522. _pDevice$ = -60                        ; size = 4
  3523. _pdwFaceCur$ = -56                    ; size = 4
  3524. _cPointsMax$ = -52                    ; size = 4
  3525. _pdwFacePrev$ = -52                    ; size = 4
  3526. _pVBVertices$ = -48                    ; size = 4
  3527. _rgaeAttributeTableMesh$ = -44                ; size = 4
  3528. _rgiStrips$ = -40                    ; size = 4
  3529. _pibFaces$ = -36                    ; size = 4
  3530. tv1451 = -32                        ; size = 4
  3531. tv1375 = -32                        ; size = 4
  3532. _rgdwFaces$ = -28                    ; size = 4
  3533. _b16BitMesh$ = -21                    ; size = 1
  3534. _iEndOfStrips$ = -20                    ; size = 4
  3535. _pvMeshPoints$ = -16                    ; size = 4
  3536. _pvLinePoints$ = -12                    ; size = 4
  3537. _iCurLine$ = -8                        ; size = 4
  3538. _iFace$ = -8                        ; size = 4
  3539. _cFaces$ = -8                        ; size = 4
  3540. _iStripIndex$ = -4                    ; size = 4
  3541. _hr$ = -4                        ; size = 4
  3542. _iCurPoint$ = 8                        ; size = 4
  3543. _ptmMesh$ = 8                        ; size = 4
  3544. ?Init@CStripOutline@@QAEJPAUID3DXBaseMesh@@@Z PROC NEAR    ; CStripOutline::Init, COMDAT
  3545. ; _this$ = ecx
  3546.  
  3547. ; 733  : }
  3548.  
  3549.   00000    8b ff         npad     2
  3550.  
  3551. ; 344  : {
  3552.  
  3553.   00002    55         push     ebp
  3554.   00003    8b ec         mov     ebp, esp
  3555.   00005    81 ec 88 04 00
  3556.     00         sub     esp, 1160        ; 00000488H
  3557.   0000b    53         push     ebx
  3558.   0000c    56         push     esi
  3559.   0000d    57         push     edi
  3560.  
  3561. ; 345  :     HRESULT hr = S_OK;
  3562. ; 346  :     DWORD cFaces;
  3563. ; 347  :     DWORD iFace;
  3564. ; 348  :     DWORD iEndOfStrips;
  3565. ; 349  :     UINT *rgiStrips = NULL;
  3566.  
  3567.   0000e    33 ff         xor     edi, edi
  3568.   00010    8b d9         mov     ebx, ecx
  3569.  
  3570. ; 350  :     DWORD cConnections;
  3571. ; 351  :     DWORD cStrips;
  3572. ; 352  :     DWORD cPointsMax;
  3573. ; 353  :     DWORD iStripIndex;
  3574. ; 354  :     UINT iCurPoint;
  3575. ; 355  :     DWORD iCurLine;
  3576. ; 356  :     PBYTE pvLinePoints = NULL;
  3577. ; 357  :     PBYTE pvMeshPoints = NULL;
  3578. ; 358  :     LPDIRECT3DVERTEXBUFFER9 pVBVertices = NULL;
  3579. ; 359  :     LPDIRECT3DINDEXBUFFER9 pibFaces= NULL;
  3580. ; 360  :     PUINT pdwFaceCur;
  3581. ; 361  :     PUINT pdwFacePrev;
  3582. ; 362  :     PUINT rgdwFaces = NULL;
  3583. ; 363  :     CD3DXCrackDecl1 cdMesh;
  3584.  
  3585.   00012    8d 8d f0 fe ff
  3586.     ff         lea     ecx, DWORD PTR _cdMesh$[ebp]
  3587.   00018    89 7d d8     mov     DWORD PTR _rgiStrips$[ebp], edi
  3588.   0001b    89 7d f4     mov     DWORD PTR _pvLinePoints$[ebp], edi
  3589.   0001e    89 7d f0     mov     DWORD PTR _pvMeshPoints$[ebp], edi
  3590.   00021    89 7d d0     mov     DWORD PTR _pVBVertices$[ebp], edi
  3591.   00024    89 7d dc     mov     DWORD PTR _pibFaces$[ebp], edi
  3592.   00027    89 7d e4     mov     DWORD PTR _rgdwFaces$[ebp], edi
  3593.   0002a    e8 00 00 00 00     call     ??0CD3DXCrackDecl1@@QAE@XZ ; CD3DXCrackDecl1::CD3DXCrackDecl1
  3594.  
  3595. ; 364  :     PWORD rgwFaces = NULL;
  3596. ; 365  :     bool b16BitMesh;
  3597. ; 366  :     UINT iIndex;
  3598. ; 367  :     LPDIRECT3DDEVICE9 pDevice;
  3599. ; 368  :     D3DXATTRIBUTERANGE *rgaeAttributeTableMesh = NULL;
  3600. ; 369  :     DWORD iattr;
  3601. ; 370  :     DWORD cStripsCur;
  3602. ; 371  :     DWORD cVerticesCur;
  3603. ; 372  :     DWORD dwFVFAdjVertices;
  3604. ; 373  :     D3DCAPS9 Caps;
  3605. ; 374  :     DWORD iFaceEnd;
  3606. ; 375  :     DWORD iFaceStart;
  3607. ; 376  :     D3DVERTEXELEMENT9 pDecl[MAX_FVF_DECL_SIZE];
  3608. ; 377  :     LPD3DVERTEXELEMENT9 pDeclCur;
  3609. ; 378  : 
  3610. ; 379  :     hr = CreateEmptyOutline();
  3611.  
  3612.   0002f    8b cb         mov     ecx, ebx
  3613.   00031    89 7d bc     mov     DWORD PTR _rgwFaces$[ebp], edi
  3614.   00034    89 7d d4     mov     DWORD PTR _rgaeAttributeTableMesh$[ebp], edi
  3615.   00037    e8 00 00 00 00     call     ?CreateEmptyOutline@CStripOutline@@AAEJXZ ; CStripOutline::CreateEmptyOutline
  3616.  
  3617. ; 380  :     if (FAILED(hr))
  3618.  
  3619.   0003c    3b c7         cmp     eax, edi
  3620.   0003e    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3621.   00041    0f 8c 17 06 00
  3622.     00         jl     $e_Exit$56484
  3623.  
  3624. ; 381  :         goto e_Exit;
  3625. ; 382  : 
  3626. ; 383  : 
  3627. ; 384  :     if (ptmMesh == NULL)
  3628.  
  3629.   00047    8b 75 08     mov     esi, DWORD PTR _ptmMesh$[ebp]
  3630.   0004a    3b f7         cmp     esi, edi
  3631.   0004c    0f 84 0c 06 00
  3632.     00         je     $e_Exit$56484
  3633.  
  3634. ; 385  :         goto e_Exit;
  3635. ; 386  : 
  3636. ; 387  :     ptmMesh->GetDeclaration(pDecl);
  3637.  
  3638.   00052    8b 06         mov     eax, DWORD PTR [esi]
  3639.   00054    8d 8d a8 fc ff
  3640.     ff         lea     ecx, DWORD PTR _pDecl$[ebp]
  3641.   0005a    51         push     ecx
  3642.   0005b    56         push     esi
  3643.   0005c    ff 50 1c     call     DWORD PTR [eax+28]
  3644.  
  3645. ; 388  :     cdMesh.SetDeclaration(pDecl);
  3646.  
  3647.   0005f    8d 85 a8 fc ff
  3648.     ff         lea     eax, DWORD PTR _pDecl$[ebp]
  3649.   00065    50         push     eax
  3650.   00066    8d 8d f0 fe ff
  3651.     ff         lea     ecx, DWORD PTR _cdMesh$[ebp]
  3652.   0006c    e8 00 00 00 00     call     ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl1::SetDeclaration
  3653.  
  3654. ; 389  : 
  3655. ; 390  :     ptmMesh->GetDevice(&pDevice);
  3656.  
  3657.   00071    8b 06         mov     eax, DWORD PTR [esi]
  3658.   00073    8d 4d c4     lea     ecx, DWORD PTR _pDevice$[ebp]
  3659.   00076    51         push     ecx
  3660.   00077    56         push     esi
  3661.   00078    ff 50 28     call     DWORD PTR [eax+40]
  3662.  
  3663. ; 391  :     pDevice->Release();
  3664.  
  3665.   0007b    8b 45 c4     mov     eax, DWORD PTR _pDevice$[ebp]
  3666.   0007e    8b 08         mov     ecx, DWORD PTR [eax]
  3667.   00080    50         push     eax
  3668.   00081    ff 51 08     call     DWORD PTR [ecx+8]
  3669.  
  3670. ; 392  : 
  3671. ; 393  :     pDevice->GetDeviceCaps(&Caps);
  3672.  
  3673.   00084    8b 45 c4     mov     eax, DWORD PTR _pDevice$[ebp]
  3674.   00087    8b 08         mov     ecx, DWORD PTR [eax]
  3675.   00089    8d 95 78 fb ff
  3676.     ff         lea     edx, DWORD PTR _Caps$[ebp]
  3677.   0008f    52         push     edx
  3678.   00090    50         push     eax
  3679.   00091    ff 51 1c     call     DWORD PTR [ecx+28]
  3680.  
  3681. ; 394  :     m_bHWVertexShaders = Caps.VertexShaderVersion >= D3DVS_VERSION(1,1);
  3682.  
  3683.   00094    81 bd 3c fc ff
  3684.     ff 01 01 fe ff     cmp     DWORD PTR _Caps$[ebp+196], -130815 ; fffe0101H
  3685.  
  3686. ; 395  : 
  3687. ; 396  :     // is the mesh 16 bit?
  3688. ; 397  :     b16BitMesh = !(ptmMesh->GetOptions() & D3DXMESH_32BIT);
  3689.  
  3690.   0009e    56         push     esi
  3691.   0009f    1b c0         sbb     eax, eax
  3692.   000a1    40         inc     eax
  3693.   000a2    89 43 48     mov     DWORD PTR [ebx+72], eax
  3694.   000a5    8b 06         mov     eax, DWORD PTR [esi]
  3695.   000a7    ff 50 24     call     DWORD PTR [eax+36]
  3696.  
  3697. ; 398  : 
  3698. ; 399  :     hr = ptmMesh->GetAttributeTable(NULL, &m_caeAttributeTable);
  3699.  
  3700.   000aa    8b 0e         mov     ecx, DWORD PTR [esi]
  3701.   000ac    34 ff         xor     al, 255            ; 000000ffH
  3702.   000ae    24 01         and     al, 1
  3703.   000b0    88 45 eb     mov     BYTE PTR _b16BitMesh$[ebp], al
  3704.   000b3    8d 43 58     lea     eax, DWORD PTR [ebx+88]
  3705.   000b6    50         push     eax
  3706.   000b7    57         push     edi
  3707.   000b8    56         push     esi
  3708.   000b9    ff 51 4c     call     DWORD PTR [ecx+76]
  3709.  
  3710. ; 400  :     if (FAILED(hr))
  3711.  
  3712.   000bc    3b c7         cmp     eax, edi
  3713.   000be    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3714.   000c1    0f 8c 97 05 00
  3715.     00         jl     $e_Exit$56484
  3716.  
  3717. ; 401  :         goto e_Exit;
  3718. ; 402  : 
  3719. ; 403  :     if (m_caeAttributeTable == 0)
  3720.  
  3721.   000c7    8b 43 58     mov     eax, DWORD PTR [ebx+88]
  3722.   000ca    85 c0         test     eax, eax
  3723.   000cc    0f 84 8c 05 00
  3724.     00         je     $e_Exit$56484
  3725.  
  3726. ; 404  :     {
  3727. ; 405  :         // not attribute sorted!  just return for now
  3728. ; 406  :         goto e_Exit;
  3729. ; 407  :     }
  3730. ; 408  : 
  3731. ; 409  :     rgaeAttributeTableMesh = new D3DXATTRIBUTERANGE[m_caeAttributeTable];
  3732.  
  3733.   000d2    8d 04 80     lea     eax, DWORD PTR [eax+eax*4]
  3734.   000d5    c1 e0 02     shl     eax, 2
  3735.   000d8    50         push     eax
  3736.   000d9    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3737.   000de    89 45 d4     mov     DWORD PTR _rgaeAttributeTableMesh$[ebp], eax
  3738.  
  3739. ; 410  :     m_rgaeAttributeTable = new D3DXATTRIBUTERANGE[m_caeAttributeTable];
  3740.  
  3741.   000e1    8b 43 58     mov     eax, DWORD PTR [ebx+88]
  3742.   000e4    8d 04 80     lea     eax, DWORD PTR [eax+eax*4]
  3743.   000e7    c1 e0 02     shl     eax, 2
  3744.   000ea    50         push     eax
  3745.   000eb    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3746.  
  3747. ; 411  :     if ((rgaeAttributeTableMesh == NULL) || (rgaeAttributeTableMesh == NULL))
  3748.  
  3749.   000f0    39 7d d4     cmp     DWORD PTR _rgaeAttributeTableMesh$[ebp], edi
  3750.   000f3    59         pop     ecx
  3751.   000f4    59         pop     ecx
  3752.   000f5    89 43 54     mov     DWORD PTR [ebx+84], eax
  3753.   000f8    0f 84 59 05 00
  3754.     00         je     $L56498
  3755.  
  3756. ; 414  :         goto e_Exit;
  3757. ; 415  :     }
  3758. ; 416  : 
  3759. ; 417  :     hr = ptmMesh->GetAttributeTable(rgaeAttributeTableMesh, NULL);
  3760.  
  3761.   000fe    57         push     edi
  3762.   000ff    ff 75 d4     push     DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3763.   00102    8b c6         mov     eax, esi
  3764.   00104    8b 08         mov     ecx, DWORD PTR [eax]
  3765.   00106    50         push     eax
  3766.   00107    ff 51 4c     call     DWORD PTR [ecx+76]
  3767.  
  3768. ; 418  :     if (FAILED(hr))
  3769.  
  3770.   0010a    85 c0         test     eax, eax
  3771.   0010c    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3772.   0010f    0f 8c 49 05 00
  3773.     00         jl     $e_Exit$56484
  3774.  
  3775. ; 419  :         goto e_Exit;
  3776. ; 420  : 
  3777. ; 421  :     cFaces = 0;
  3778.  
  3779.   00115    33 f6         xor     esi, esi
  3780.  
  3781. ; 422  :     for (iattr = 0; iattr < m_caeAttributeTable; iattr++)
  3782.  
  3783.   00117    39 73 58     cmp     DWORD PTR [ebx+88], esi
  3784.   0011a    89 75 f8     mov     DWORD PTR _cFaces$[ebp], esi
  3785.   0011d    76 1e         jbe     SHORT $L56506
  3786.   0011f    8b 45 d4     mov     eax, DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3787.   00122    8b 53 58     mov     edx, DWORD PTR [ebx+88]
  3788.   00125    83 c0 04     add     eax, 4
  3789. $L56504:
  3790.  
  3791. ; 423  :     {
  3792. ; 424  :         cFaces = max(cFaces, rgaeAttributeTableMesh[iattr].FaceStart + rgaeAttributeTableMesh[iattr].FaceCount);
  3793.  
  3794.   00128    8b 48 04     mov     ecx, DWORD PTR [eax+4]
  3795.   0012b    8b 38         mov     edi, DWORD PTR [eax]
  3796.   0012d    03 cf         add     ecx, edi
  3797.   0012f    39 4d f8     cmp     DWORD PTR _cFaces$[ebp], ecx
  3798.   00132    77 03         ja     SHORT $L57147
  3799.   00134    89 4d f8     mov     DWORD PTR _cFaces$[ebp], ecx
  3800. $L57147:
  3801.  
  3802. ; 422  :     for (iattr = 0; iattr < m_caeAttributeTable; iattr++)
  3803.  
  3804.   00137    83 c0 14     add     eax, 20            ; 00000014H
  3805.   0013a    4a         dec     edx
  3806.   0013b    75 eb         jne     SHORT $L56504
  3807. $L56506:
  3808.  
  3809. ; 425  :     }
  3810. ; 426  : 
  3811. ; 427  :     if (cdMesh.CWeights() > 0)
  3812.  
  3813.   0013d    8b 85 7c ff ff
  3814.     ff         mov     eax, DWORD PTR _cdMesh$[ebp+140]
  3815.   00143    3b c6         cmp     eax, esi
  3816.   00145    74 25         je     SHORT $L56507
  3817.   00147    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  3818.   0014b    40         inc     eax
  3819.   0014c    3b c6         cmp     eax, esi
  3820.   0014e    7e 1c         jle     SHORT $L56507
  3821.  
  3822. ; 428  :     {
  3823. ; 429  :         m_bSkinning = TRUE;
  3824.  
  3825.   00150    33 c0         xor     eax, eax
  3826.   00152    40         inc     eax
  3827.  
  3828. ; 430  : 
  3829. ; 431  :         if (cdMesh.BIndexedWeights())
  3830.  
  3831.   00153    39 75 80     cmp     DWORD PTR _cdMesh$[ebp+144], esi
  3832.   00156    89 43 40     mov     DWORD PTR [ebx+64], eax
  3833.   00159    74 0a         je     SHORT $L56508
  3834.  
  3835. ; 432  :         {
  3836. ; 433  :             dwFVFAdjVertices = INDEXSKINNEDFVF;
  3837.  
  3838.   0015b    b9 0e 87 79 1e     mov     ecx, 511280910        ; 1e79870eH
  3839.  
  3840. ; 434  :             m_bIndexSkinning = TRUE;
  3841.  
  3842.   00160    89 43 44     mov     DWORD PTR [ebx+68], eax
  3843.  
  3844. ; 435  :         }
  3845. ; 436  :         else
  3846.  
  3847.   00163    eb 10         jmp     SHORT $L56510
  3848. $L56508:
  3849.  
  3850. ; 437  :         {
  3851. ; 438  :             dwFVFAdjVertices = SKINNEDFVF;
  3852.  
  3853.   00165    b9 0c 05 99 01     mov     ecx, 26805516        ; 0199050cH
  3854.  
  3855. ; 439  :             m_bIndexSkinning = FALSE;
  3856. ; 440  :         }
  3857. ; 441  :     }
  3858. ; 442  :     else
  3859.  
  3860.   0016a    eb 06         jmp     SHORT $L57194
  3861. $L56507:
  3862.  
  3863. ; 443  :     {
  3864. ; 444  :         dwFVFAdjVertices = D3DFVF_XYZ;
  3865.  
  3866.   0016c    6a 02         push     2
  3867.   0016e    59         pop     ecx
  3868.  
  3869. ; 445  :         m_bSkinning = FALSE;
  3870.  
  3871.   0016f    89 73 40     mov     DWORD PTR [ebx+64], esi
  3872. $L57194:
  3873.  
  3874. ; 446  :         m_bIndexSkinning = FALSE;
  3875.  
  3876.   00172    89 73 44     mov     DWORD PTR [ebx+68], esi
  3877. $L56510:
  3878.  
  3879. ; 447  :     }
  3880. ; 448  :     m_cfvf = DXCrackFVF(dwFVFAdjVertices);
  3881.  
  3882.   00175    51         push     ecx
  3883.   00176    8d 8d b0 fe ff
  3884.     ff         lea     ecx, DWORD PTR $T57148[ebp]
  3885.   0017c    e8 00 00 00 00     call     ??0DXCrackFVF@@QAE@K@Z    ; DXCrackFVF::DXCrackFVF
  3886.   00181    8b f0         mov     esi, eax
  3887.  
  3888. ; 449  : 
  3889. ; 450  :     // allocate a temporary array to track the triangles to connect with lines
  3890. ; 451  :     rgiStrips = new UINT[cFaces*2];
  3891.  
  3892.   00183    8b 45 f8     mov     eax, DWORD PTR _cFaces$[ebp]
  3893.   00186    6a 10         push     16            ; 00000010H
  3894.   00188    59         pop     ecx
  3895.   00189    c1 e0 03     shl     eax, 3
  3896.   0018c    8b fb         mov     edi, ebx
  3897.   0018e    50         push     eax
  3898.   0018f    f3 a5         rep movsd
  3899.   00191    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3900.  
  3901. ; 452  :     if (rgiStrips == NULL)
  3902.  
  3903.   00196    85 c0         test     eax, eax
  3904.   00198    59         pop     ecx
  3905.   00199    89 45 d8     mov     DWORD PTR _rgiStrips$[ebp], eax
  3906.  
  3907. ; 693  :     if (FAILED(hr))
  3908. ; 694  :         goto e_Exit;
  3909. ; 695  : 
  3910. ; 696  : e_Exit:
  3911.  
  3912.   0019c    0f 84 b5 04 00
  3913.     00         je     $L56498
  3914.  
  3915. ; 453  :     {
  3916. ; 454  :         hr = E_OUTOFMEMORY;
  3917. ; 455  :         goto e_Exit;
  3918. ; 456  :     }
  3919. ; 457  : 
  3920. ; 458  :     if (b16BitMesh)
  3921.  
  3922.   001a2    80 7d eb 00     cmp     BYTE PTR _b16BitMesh$[ebp], 0
  3923.   001a6    0f 84 84 00 00
  3924.     00         je     $L56517
  3925.  
  3926. ; 459  :     {
  3927. ; 460  :         // allocate a temporary, so that the follow code
  3928. ; 461  :         //   can work on just 32bit indices
  3929. ; 462  :         rgdwFaces = new UINT[cFaces*3];
  3930.  
  3931.   001ac    8b 7d f8     mov     edi, DWORD PTR _cFaces$[ebp]
  3932.   001af    8d 04 7f     lea     eax, DWORD PTR [edi+edi*2]
  3933.   001b2    c1 e0 02     shl     eax, 2
  3934.   001b5    50         push     eax
  3935.   001b6    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3936.  
  3937. ; 463  :         if (rgdwFaces == NULL)
  3938.  
  3939.   001bb    85 c0         test     eax, eax
  3940.   001bd    59         pop     ecx
  3941.   001be    89 45 e4     mov     DWORD PTR _rgdwFaces$[ebp], eax
  3942.  
  3943. ; 693  :     if (FAILED(hr))
  3944. ; 694  :         goto e_Exit;
  3945. ; 695  : 
  3946. ; 696  : e_Exit:
  3947.  
  3948.   001c1    0f 84 90 04 00
  3949.     00         je     $L56498
  3950.   001c7    8b 45 08     mov     eax, DWORD PTR _ptmMesh$[ebp]
  3951.   001ca    8b 08         mov     ecx, DWORD PTR [eax]
  3952.   001cc    8d 55 dc     lea     edx, DWORD PTR _pibFaces$[ebp]
  3953.   001cf    52         push     edx
  3954.   001d0    50         push     eax
  3955.   001d1    ff 51 38     call     DWORD PTR [ecx+56]
  3956.   001d4    85 c0         test     eax, eax
  3957.   001d6    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3958.   001d9    0f 8c 7f 04 00
  3959.     00         jl     $e_Exit$56484
  3960.   001df    8b 45 dc     mov     eax, DWORD PTR _pibFaces$[ebp]
  3961.   001e2    8b 08         mov     ecx, DWORD PTR [eax]
  3962.   001e4    68 00 08 00 00     push     2048            ; 00000800H
  3963.   001e9    8d 55 bc     lea     edx, DWORD PTR _rgwFaces$[ebp]
  3964.   001ec    52         push     edx
  3965.   001ed    6a 00         push     0
  3966.   001ef    6a 00         push     0
  3967.   001f1    50         push     eax
  3968.   001f2    ff 51 2c     call     DWORD PTR [ecx+44]
  3969.   001f5    85 c0         test     eax, eax
  3970.   001f7    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3971.   001fa    0f 8c 5e 04 00
  3972.     00         jl     $e_Exit$56484
  3973.   00200    8d 3c 7f     lea     edi, DWORD PTR [edi+edi*2]
  3974.   00203    33 c0         xor     eax, eax
  3975.   00205    85 ff         test     edi, edi
  3976.   00207    76 60         jbe     SHORT $L56541
  3977. $L56530:
  3978.  
  3979. ; 464  :         {
  3980. ; 465  :             hr = E_OUTOFMEMORY;
  3981. ; 466  :             goto e_Exit;
  3982. ; 467  :         }
  3983. ; 468  : 
  3984. ; 469  :         // get the index buffer
  3985. ; 470  :         hr = ptmMesh->GetIndexBuffer(&pibFaces);
  3986. ; 471  :         if (FAILED(hr))
  3987. ; 472  :             goto e_Exit;
  3988. ; 473  : 
  3989. ; 474  :         hr = pibFaces->Lock(0,0, (PVOID*)&rgwFaces, D3DLOCK_NOSYSLOCK );
  3990. ; 475  :         if (FAILED(hr))
  3991. ; 476  :             goto e_Exit;
  3992. ; 477  : 
  3993. ; 478  :         // UpConvert from 16 bit to 32 bit
  3994. ; 479  :         for (iIndex = 0; iIndex < cFaces * 3; iIndex++)
  3995. ; 480  :         {
  3996. ; 481  :             if (rgwFaces[iIndex] != UNUSED16)
  3997.  
  3998.   00209    8b 4d bc     mov     ecx, DWORD PTR _rgwFaces$[ebp]
  3999.   0020c    66 8b 0c 41     mov     cx, WORD PTR [ecx+eax*2]
  4000.   00210    66 81 f9 ff ff     cmp     cx, 65535        ; 0000ffffH
  4001.   00215    74 0b         je     SHORT $L56533
  4002.  
  4003. ; 482  :                 rgdwFaces[iIndex] = rgwFaces[iIndex];
  4004.  
  4005.   00217    8b 55 e4     mov     edx, DWORD PTR _rgdwFaces$[ebp]
  4006.   0021a    0f b7 c9     movzx     ecx, cx
  4007.   0021d    89 0c 82     mov     DWORD PTR [edx+eax*4], ecx
  4008.  
  4009. ; 483  :             else
  4010.  
  4011.   00220    eb 07         jmp     SHORT $L56531
  4012. $L56533:
  4013.  
  4014. ; 484  :                 rgdwFaces[iIndex] = UNUSED32;
  4015.  
  4016.   00222    8b 4d e4     mov     ecx, DWORD PTR _rgdwFaces$[ebp]
  4017.   00225    83 0c 81 ff     or     DWORD PTR [ecx+eax*4], -1
  4018. $L56531:
  4019.   00229    40         inc     eax
  4020.   0022a    3b c7         cmp     eax, edi
  4021.   0022c    72 db         jb     SHORT $L56530
  4022.  
  4023. ; 485  :         }
  4024. ; 486  :     }
  4025. ; 487  :     else
  4026.  
  4027.   0022e    eb 39         jmp     SHORT $L56541
  4028. $L56517:
  4029.  
  4030. ; 488  :     {
  4031. ; 489  :         // get the index buffer
  4032. ; 490  :         hr = ptmMesh->GetIndexBuffer(&pibFaces);
  4033.  
  4034.   00230    8b 45 08     mov     eax, DWORD PTR _ptmMesh$[ebp]
  4035.   00233    8b 08         mov     ecx, DWORD PTR [eax]
  4036.   00235    8d 55 dc     lea     edx, DWORD PTR _pibFaces$[ebp]
  4037.   00238    52         push     edx
  4038.   00239    50         push     eax
  4039.   0023a    ff 51 38     call     DWORD PTR [ecx+56]
  4040.  
  4041. ; 491  :         if (FAILED(hr))
  4042.  
  4043.   0023d    85 c0         test     eax, eax
  4044.   0023f    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4045.   00242    0f 8c 2b 04 00
  4046.     00         jl     $L57186
  4047.  
  4048. ; 492  :             goto e_Exit;
  4049. ; 493  : 
  4050. ; 494  :         hr = pibFaces->Lock(0,0, (PVOID*)&rgdwFaces, D3DLOCK_NOSYSLOCK );
  4051.  
  4052.   00248    8b 45 dc     mov     eax, DWORD PTR _pibFaces$[ebp]
  4053.   0024b    8b 08         mov     ecx, DWORD PTR [eax]
  4054.   0024d    68 00 08 00 00     push     2048            ; 00000800H
  4055.   00252    8d 55 e4     lea     edx, DWORD PTR _rgdwFaces$[ebp]
  4056.   00255    52         push     edx
  4057.   00256    6a 00         push     0
  4058.   00258    6a 00         push     0
  4059.   0025a    50         push     eax
  4060.   0025b    ff 51 2c     call     DWORD PTR [ecx+44]
  4061.  
  4062. ; 495  :         if (FAILED(hr))
  4063.  
  4064.   0025e    85 c0         test     eax, eax
  4065.   00260    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4066.   00263    0f 8c 0a 04 00
  4067.     00         jl     $L57186
  4068. $L56541:
  4069.  
  4070. ; 496  :             goto e_Exit;
  4071. ; 497  :     }
  4072. ; 498  : 
  4073. ; 499  : 
  4074. ; 500  :     // start out with zero entries in each attribute table
  4075. ; 501  :             // fixup the rest of the entries after figuring out the counts
  4076. ; 502  :     for (iattr = 0; iattr < m_caeAttributeTable; iattr++)
  4077.  
  4078.   00269    8b 55 d4     mov     edx, DWORD PTR _rgaeAttributeTableMesh$[ebp]
  4079.   0026c    33 c0         xor     eax, eax
  4080.   0026e    33 c9         xor     ecx, ecx
  4081.   00270    39 43 58     cmp     DWORD PTR [ebx+88], eax
  4082.   00273    76 22         jbe     SHORT $L56545
  4083. $L57190:
  4084.  
  4085. ; 503  :     {
  4086. ; 504  :         m_rgaeAttributeTable[iattr].FaceCount = 0;
  4087.  
  4088.   00275    8b 73 54     mov     esi, DWORD PTR [ebx+84]
  4089.   00278    83 64 06 08 00     and     DWORD PTR [esi+eax+8], 0
  4090.  
  4091. ; 505  :         m_rgaeAttributeTable[iattr].VertexCount = 0;
  4092.  
  4093.   0027d    8b 73 54     mov     esi, DWORD PTR [ebx+84]
  4094.   00280    83 64 06 10 00     and     DWORD PTR [esi+eax+16], 0
  4095.  
  4096. ; 506  : 
  4097. ; 507  :         m_rgaeAttributeTable[iattr].AttribId = rgaeAttributeTableMesh[iattr].AttribId;
  4098.  
  4099.   00285    8b 3c 10     mov     edi, DWORD PTR [eax+edx]
  4100.   00288    8b 73 54     mov     esi, DWORD PTR [ebx+84]
  4101.   0028b    89 3c 30     mov     DWORD PTR [eax+esi], edi
  4102.   0028e    41         inc     ecx
  4103.   0028f    83 c0 14     add     eax, 20            ; 00000014H
  4104.   00292    3b 4b 58     cmp     ecx, DWORD PTR [ebx+88]
  4105.   00295    72 de         jb     SHORT $L57190
  4106. $L56545:
  4107.  
  4108. ; 508  : 
  4109. ; 509  :     }
  4110. ; 510  : 
  4111. ; 511  :     iEndOfStrips = 0;
  4112.  
  4113.   00297    33 c0         xor     eax, eax
  4114.  
  4115. ; 512  :     cConnections = 0;
  4116. ; 513  :     cStrips = 0;
  4117. ; 514  : 
  4118. ; 515  :     for (iattr = 0; iattr < m_caeAttributeTable; iattr++)
  4119.  
  4120.   00299    39 43 58     cmp     DWORD PTR [ebx+88], eax
  4121.   0029c    89 45 ec     mov     DWORD PTR _iEndOfStrips$[ebp], eax
  4122.   0029f    89 45 b4     mov     DWORD PTR _cConnections$[ebp], eax
  4123.   002a2    89 45 b8     mov     DWORD PTR _iattr$[ebp], eax
  4124.   002a5    0f 86 da 00 00
  4125.     00         jbe     $L56548
  4126.   002ab    8d 4a 08     lea     ecx, DWORD PTR [edx+8]
  4127.   002ae    c7 45 c0 f8 ff
  4128.     ff ff         mov     DWORD PTR tv1394[ebp], -8 ; fffffff8H
  4129.   002b5    29 55 c0     sub     DWORD PTR tv1394[ebp], edx
  4130.   002b8    89 4d e0     mov     DWORD PTR tv1375[ebp], ecx
  4131.   002bb    eb 02         jmp     SHORT $L56546
  4132. $L57193:
  4133.  
  4134. ; 508  : 
  4135. ; 509  :     }
  4136. ; 510  : 
  4137. ; 511  :     iEndOfStrips = 0;
  4138.  
  4139.   002bd    33 c0         xor     eax, eax
  4140. $L56546:
  4141.  
  4142. ; 516  :     {
  4143. ; 517  :         if (rgaeAttributeTableMesh[iattr].FaceCount == 0)
  4144.  
  4145.   002bf    8b 4d e0     mov     ecx, DWORD PTR tv1375[ebp]
  4146.   002c2    39 01         cmp     DWORD PTR [ecx], eax
  4147.   002c4    0f 84 a8 00 00
  4148.     00         je     $L56547
  4149.  
  4150. ; 518  :             continue;
  4151. ; 519  : 
  4152. ; 520  :         m_rgaeAttributeTable[iattr].VertexCount = 0;
  4153.  
  4154.   002ca    8b 45 c0     mov     eax, DWORD PTR tv1394[ebp]
  4155.   002cd    8d 34 08     lea     esi, DWORD PTR [eax+ecx]
  4156.   002d0    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  4157.   002d3    83 64 30 10 00     and     DWORD PTR [eax+esi+16], 0
  4158.  
  4159. ; 521  : 
  4160. ; 522  :         iFaceStart = rgaeAttributeTableMesh[iattr].FaceStart;
  4161.  
  4162.   002d8    8b 41 fc     mov     eax, DWORD PTR [ecx-4]
  4163.  
  4164. ; 523  :         iFaceEnd = iFaceStart + rgaeAttributeTableMesh[iattr].FaceCount;
  4165.  
  4166.   002db    8b 39         mov     edi, DWORD PTR [ecx]
  4167.  
  4168. ; 524  : 
  4169. ; 525  :         pdwFacePrev = &rgdwFaces[iFaceStart * 3];
  4170.  
  4171.   002dd    8b 55 e4     mov     edx, DWORD PTR _rgdwFaces$[ebp]
  4172.   002e0    8d 0c 40     lea     ecx, DWORD PTR [eax+eax*2]
  4173.   002e3    8d 0c 8a     lea     ecx, DWORD PTR [edx+ecx*4]
  4174.  
  4175. ; 526  :         pdwFaceCur = pdwFacePrev + 3;
  4176. ; 527  :         rgiStrips[iEndOfStrips] = iFaceStart;
  4177.  
  4178.   002e6    8b 55 ec     mov     edx, DWORD PTR _iEndOfStrips$[ebp]
  4179.   002e9    89 4d cc     mov     DWORD PTR _pdwFacePrev$[ebp], ecx
  4180.   002ec    83 c1 0c     add     ecx, 12            ; 0000000cH
  4181.   002ef    03 f8         add     edi, eax
  4182.  
  4183. ; 528  :         iEndOfStrips += 1;
  4184.  
  4185.   002f1    ff 45 ec     inc     DWORD PTR _iEndOfStrips$[ebp]
  4186.   002f4    89 4d c8     mov     DWORD PTR _pdwFaceCur$[ebp], ecx
  4187.   002f7    8b 4d d8     mov     ecx, DWORD PTR _rgiStrips$[ebp]
  4188.   002fa    89 04 91     mov     DWORD PTR [ecx+edx*4], eax
  4189.  
  4190. ; 529  :         cStrips += 1;
  4191. ; 530  :         for (iFace = iFaceStart + 1; iFace < iFaceEnd; iFace++)
  4192.  
  4193.   002fd    40         inc     eax
  4194.   002fe    3b c7         cmp     eax, edi
  4195.   00300    89 45 f8     mov     DWORD PTR _iFace$[ebp], eax
  4196.   00303    73 60         jae     SHORT $L56552
  4197. $L56550:
  4198.  
  4199. ; 531  :         {
  4200. ; 532  :             // if the part of the same strip, extend the strip
  4201. ; 533  :             if (BConnected(pdwFaceCur, pdwFacePrev))
  4202.  
  4203.   00305    ff 75 cc     push     DWORD PTR _pdwFacePrev$[ebp]
  4204.   00308    ff 75 c8     push     DWORD PTR _pdwFaceCur$[ebp]
  4205.   0030b    e8 00 00 00 00     call     ?BConnected@@YA_NPAI0@Z    ; BConnected
  4206.   00310    84 c0         test     al, al
  4207.   00312    59         pop     ecx
  4208.   00313    59         pop     ecx
  4209.   00314    74 28         je     SHORT $L56553
  4210.  
  4211. ; 534  :             {
  4212. ; 535  :                 rgiStrips[iEndOfStrips] = iFace;
  4213.  
  4214.   00316    8b 45 d8     mov     eax, DWORD PTR _rgiStrips$[ebp]
  4215.   00319    8b 55 ec     mov     edx, DWORD PTR _iEndOfStrips$[ebp]
  4216.   0031c    8b 4d f8     mov     ecx, DWORD PTR _iFace$[ebp]
  4217.  
  4218. ; 536  :                 iEndOfStrips += 1;
  4219.  
  4220.   0031f    ff 45 ec     inc     DWORD PTR _iEndOfStrips$[ebp]
  4221.   00322    89 0c 90     mov     DWORD PTR [eax+edx*4], ecx
  4222.  
  4223. ; 537  : 
  4224. ; 538  :                 m_rgaeAttributeTable[iattr].FaceCount += 2;
  4225.  
  4226.   00325    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  4227.   00328    8d 44 06 08     lea     eax, DWORD PTR [esi+eax+8]
  4228.   0032c    83 00 02     add     DWORD PTR [eax], 2
  4229.  
  4230. ; 539  :                 m_rgaeAttributeTable[iattr].VertexCount += 4;
  4231.  
  4232.   0032f    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  4233.   00332    8d 44 06 10     lea     eax, DWORD PTR [esi+eax+16]
  4234.   00336    83 00 04     add     DWORD PTR [eax], 4
  4235.  
  4236. ; 540  : 
  4237. ; 541  :                 // how many faces are connected to another in a strip-like fashion
  4238. ; 542  :                 cConnections += 1;
  4239.  
  4240.   00339    ff 45 b4     inc     DWORD PTR _cConnections$[ebp]
  4241.  
  4242. ; 543  :             }
  4243. ; 544  :             else // end the strip, and restart a new one with the current face
  4244.  
  4245.   0033c    eb 15         jmp     SHORT $L56554
  4246. $L56553:
  4247.  
  4248. ; 545  :             {
  4249. ; 546  :                 rgiStrips[iEndOfStrips] = UNUSED32;
  4250.  
  4251.   0033e    8b 45 ec     mov     eax, DWORD PTR _iEndOfStrips$[ebp]
  4252.   00341    8b 4d d8     mov     ecx, DWORD PTR _rgiStrips$[ebp]
  4253.   00344    83 0c 81 ff     or     DWORD PTR [ecx+eax*4], -1
  4254.  
  4255. ; 547  :                 iEndOfStrips += 1;
  4256. ; 548  : 
  4257. ; 549  : 
  4258. ; 550  :                 rgiStrips[iEndOfStrips] = iFace;
  4259.  
  4260.   00348    8b 55 f8     mov     edx, DWORD PTR _iFace$[ebp]
  4261.   0034b    40         inc     eax
  4262.   0034c    89 14 81     mov     DWORD PTR [ecx+eax*4], edx
  4263.  
  4264. ; 551  :                 iEndOfStrips += 1;
  4265.  
  4266.   0034f    40         inc     eax
  4267.   00350    89 45 ec     mov     DWORD PTR _iEndOfStrips$[ebp], eax
  4268. $L56554:
  4269.  
  4270. ; 552  : 
  4271. ; 553  :                 cStrips += 1;
  4272. ; 554  :             }
  4273. ; 555  : 
  4274. ; 556  :             // move the current to the previous, then increment the current one
  4275. ; 557  :             pdwFacePrev = pdwFaceCur;
  4276.  
  4277.   00353    8b 45 c8     mov     eax, DWORD PTR _pdwFaceCur$[ebp]
  4278.  
  4279. ; 558  :             pdwFaceCur += 3;
  4280.  
  4281.   00356    83 45 c8 0c     add     DWORD PTR _pdwFaceCur$[ebp], 12 ; 0000000cH
  4282.   0035a    ff 45 f8     inc     DWORD PTR _iFace$[ebp]
  4283.   0035d    39 7d f8     cmp     DWORD PTR _iFace$[ebp], edi
  4284.   00360    89 45 cc     mov     DWORD PTR _pdwFacePrev$[ebp], eax
  4285.   00363    72 a0         jb     SHORT $L56550
  4286. $L56552:
  4287.  
  4288. ; 559  :         }
  4289. ; 560  : 
  4290. ; 561  :         // for consistency end the last strip
  4291. ; 562  :         rgiStrips[iEndOfStrips] = UNUSED32;
  4292.  
  4293.   00365    8b 4d ec     mov     ecx, DWORD PTR _iEndOfStrips$[ebp]
  4294.   00368    8b 45 d8     mov     eax, DWORD PTR _rgiStrips$[ebp]
  4295.   0036b    83 0c 88 ff     or     DWORD PTR [eax+ecx*4], -1
  4296.  
  4297. ; 563  :         iEndOfStrips += 1;
  4298.  
  4299.   0036f    ff 45 ec     inc     DWORD PTR _iEndOfStrips$[ebp]
  4300. $L56547:
  4301.   00372    ff 45 b8     inc     DWORD PTR _iattr$[ebp]
  4302.   00375    8b 45 b8     mov     eax, DWORD PTR _iattr$[ebp]
  4303.   00378    83 45 e0 14     add     DWORD PTR tv1375[ebp], 20 ; 00000014H
  4304.   0037c    3b 43 58     cmp     eax, DWORD PTR [ebx+88]
  4305.   0037f    0f 82 38 ff ff
  4306.     ff         jb     $L57193
  4307. $L56548:
  4308.  
  4309. ; 564  :     }
  4310. ; 565  : 
  4311. ; 566  : 
  4312. ; 567  :     // start out with zero entries in each attribute table
  4313. ; 568  :             // fixup the rest of the entries after figuring out the counts
  4314. ; 569  :     cStripsCur = 0;
  4315.  
  4316.   00385    33 ff         xor     edi, edi
  4317.   00387    33 d2         xor     edx, edx
  4318.  
  4319. ; 570  :     cVerticesCur = 0;
  4320.  
  4321.   00389    33 f6         xor     esi, esi
  4322.  
  4323. ; 571  :     for (iattr = 0; iattr < m_caeAttributeTable; iattr++)
  4324.  
  4325.   0038b    39 7b 58     cmp     DWORD PTR [ebx+88], edi
  4326.   0038e    76 24         jbe     SHORT $L57189
  4327.   00390    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  4328.   00393    33 c0         xor     eax, eax
  4329. $L56555:
  4330.  
  4331. ; 572  :     {
  4332. ; 573  :         m_rgaeAttributeTable[iattr].FaceStart = cStripsCur;
  4333.  
  4334.   00395    89 54 01 04     mov     DWORD PTR [ecx+eax+4], edx
  4335.  
  4336. ; 574  :         m_rgaeAttributeTable[iattr].VertexStart = cVerticesCur;
  4337.  
  4338.   00399    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  4339.   0039c    89 74 01 0c     mov     DWORD PTR [ecx+eax+12], esi
  4340.  
  4341. ; 575  : 
  4342. ; 576  :         cStripsCur += m_rgaeAttributeTable[iattr].FaceCount;
  4343.  
  4344.   003a0    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  4345.   003a3    03 54 01 08     add     edx, DWORD PTR [ecx+eax+8]
  4346.  
  4347. ; 577  :         cVerticesCur += m_rgaeAttributeTable[iattr].VertexCount;
  4348.  
  4349.   003a7    03 74 01 10     add     esi, DWORD PTR [ecx+eax+16]
  4350.   003ab    47         inc     edi
  4351.   003ac    83 c0 14     add     eax, 20            ; 00000014H
  4352.   003af    3b 7b 58     cmp     edi, DWORD PTR [ebx+88]
  4353.   003b2    72 e1         jb     SHORT $L56555
  4354. $L57189:
  4355.  
  4356. ; 578  :     }
  4357. ; 579  : 
  4358. ; 580  :     cPointsMax = cConnections * 4;
  4359.  
  4360.   003b4    8b 45 b4     mov     eax, DWORD PTR _cConnections$[ebp]
  4361.   003b7    8b c8         mov     ecx, eax
  4362.   003b9    c1 e1 02     shl     ecx, 2
  4363.  
  4364. ; 581  : 
  4365. ; 582  :     if (cConnections == 0)
  4366.  
  4367.   003bc    85 c0         test     eax, eax
  4368.   003be    89 4d cc     mov     DWORD PTR _cPointsMax$[ebp], ecx
  4369.   003c1    0f 84 97 02 00
  4370.     00         je     $e_Exit$56484
  4371.  
  4372. ; 583  :         goto e_Exit;
  4373. ; 584  : 
  4374. ; 585  :     hr = pDevice->CreateVertexBuffer(m_cfvf.m_cBytesPerVertex * cPointsMax, 
  4375. ; 586  :                     D3DUSAGE_WRITEONLY|(m_bHWVertexShaders ? 0:D3DUSAGE_SOFTWAREPROCESSING), 
  4376. ; 587  :                     m_cfvf.m_dwFVF, D3DPOOL_MANAGED, &m_pVertexBuffer, NULL);
  4377.  
  4378.   003c7    8b 53 48     mov     edx, DWORD PTR [ebx+72]
  4379.   003ca    8b 45 c4     mov     eax, DWORD PTR _pDevice$[ebp]
  4380.   003cd    8b 08         mov     ecx, DWORD PTR [eax]
  4381.   003cf    f7 da         neg     edx
  4382.   003d1    6a 00         push     0
  4383.   003d3    1b d2         sbb     edx, edx
  4384.   003d5    83 e2 f0     and     edx, -16        ; fffffff0H
  4385.   003d8    8d 7b 4c     lea     edi, DWORD PTR [ebx+76]
  4386.   003db    57         push     edi
  4387.   003dc    6a 01         push     1
  4388.   003de    ff 33         push     DWORD PTR [ebx]
  4389.   003e0    83 c2 10     add     edx, 16            ; 00000010H
  4390.   003e3    83 ca 08     or     edx, 8
  4391.   003e6    52         push     edx
  4392.   003e7    8b 53 04     mov     edx, DWORD PTR [ebx+4]
  4393.   003ea    0f af 55 cc     imul     edx, DWORD PTR _cPointsMax$[ebp]
  4394.   003ee    52         push     edx
  4395.   003ef    50         push     eax
  4396.   003f0    ff 51 68     call     DWORD PTR [ecx+104]
  4397.  
  4398. ; 588  :     if (FAILED(hr))
  4399.  
  4400.   003f3    85 c0         test     eax, eax
  4401.   003f5    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4402.   003f8    0f 8c 60 02 00
  4403.     00         jl     $e_Exit$56484
  4404.  
  4405. ; 589  :         goto e_Exit;
  4406. ; 590  : 
  4407. ; 591  :     hr = m_pVertexBuffer->Lock(0,0, (PVOID*)&pvLinePoints, D3DLOCK_NOSYSLOCK );
  4408.  
  4409.   003fe    8b 3f         mov     edi, DWORD PTR [edi]
  4410.   00400    8b 07         mov     eax, DWORD PTR [edi]
  4411.   00402    be 00 08 00 00     mov     esi, 2048        ; 00000800H
  4412.   00407    56         push     esi
  4413.   00408    8d 4d f4     lea     ecx, DWORD PTR _pvLinePoints$[ebp]
  4414.   0040b    51         push     ecx
  4415.   0040c    6a 00         push     0
  4416.   0040e    6a 00         push     0
  4417.   00410    57         push     edi
  4418.   00411    ff 50 2c     call     DWORD PTR [eax+44]
  4419.  
  4420. ; 592  :     if (FAILED(hr))
  4421.  
  4422.   00414    33 ff         xor     edi, edi
  4423.   00416    3b c7         cmp     eax, edi
  4424.   00418    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4425.   0041b    0f 8c 3d 02 00
  4426.     00         jl     $e_Exit$56484
  4427.  
  4428. ; 593  :         goto e_Exit;
  4429. ; 594  : 
  4430. ; 595  :     hr = ptmMesh->GetVertexBuffer(&pVBVertices);
  4431.  
  4432.   00421    8b 45 08     mov     eax, DWORD PTR _ptmMesh$[ebp]
  4433.   00424    8b 08         mov     ecx, DWORD PTR [eax]
  4434.   00426    8d 55 d0     lea     edx, DWORD PTR _pVBVertices$[ebp]
  4435.   00429    52         push     edx
  4436.   0042a    50         push     eax
  4437.   0042b    ff 51 34     call     DWORD PTR [ecx+52]
  4438.  
  4439. ; 596  :     if (FAILED(hr))
  4440.  
  4441.   0042e    3b c7         cmp     eax, edi
  4442.   00430    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4443.   00433    0f 8c 25 02 00
  4444.     00         jl     $e_Exit$56484
  4445.  
  4446. ; 597  :         goto e_Exit;
  4447. ; 598  : 
  4448. ; 599  :     hr = pVBVertices->Lock(0,0, (PVOID*)&pvMeshPoints, D3DLOCK_NOSYSLOCK );
  4449.  
  4450.   00439    8b 45 d0     mov     eax, DWORD PTR _pVBVertices$[ebp]
  4451.   0043c    8b 08         mov     ecx, DWORD PTR [eax]
  4452.   0043e    56         push     esi
  4453.   0043f    8d 55 f0     lea     edx, DWORD PTR _pvMeshPoints$[ebp]
  4454.   00442    52         push     edx
  4455.   00443    57         push     edi
  4456.   00444    57         push     edi
  4457.   00445    50         push     eax
  4458.   00446    ff 51 2c     call     DWORD PTR [ecx+44]
  4459.  
  4460. ; 600  :     if (FAILED(hr))
  4461.  
  4462.   00449    3b c7         cmp     eax, edi
  4463.   0044b    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4464.   0044e    0f 8c 0a 02 00
  4465.     00         jl     $e_Exit$56484
  4466.  
  4467. ; 601  :         goto e_Exit;
  4468. ; 602  : 
  4469. ; 603  : 
  4470. ; 604  :     iStripIndex = 0;
  4471. ; 605  :     iCurPoint = 0;
  4472. ; 606  :     iCurLine = 0;
  4473. ; 607  :     while (iStripIndex < iEndOfStrips)
  4474.  
  4475.   00454    39 7d ec     cmp     DWORD PTR _iEndOfStrips$[ebp], edi
  4476.   00457    89 7d fc     mov     DWORD PTR _iStripIndex$[ebp], edi
  4477.   0045a    89 7d 08     mov     DWORD PTR _iCurPoint$[ebp], edi
  4478.   0045d    89 7d f8     mov     DWORD PTR _iCurLine$[ebp], edi
  4479.   00460    0f 86 7b 01 00
  4480.     00         jbe     $L57188
  4481. $L56575:
  4482.  
  4483. ; 608  :     {
  4484. ; 609  :         iFace = rgiStrips[iStripIndex];
  4485.  
  4486.   00466    8b 4d fc     mov     ecx, DWORD PTR _iStripIndex$[ebp]
  4487.   00469    8b 45 d8     mov     eax, DWORD PTR _rgiStrips$[ebp]
  4488.   0046c    8b 04 88     mov     eax, DWORD PTR [eax+ecx*4]
  4489.  
  4490. ; 610  :         iStripIndex += 1;
  4491.  
  4492.   0046f    ff 45 fc     inc     DWORD PTR _iStripIndex$[ebp]
  4493.  
  4494. ; 611  : 
  4495. ; 612  :         // for pref reasons, there are a lot of unconnected triangles sometimes
  4496. ; 613  :         if (iFace == UNUSED32)
  4497.  
  4498.   00472    83 f8 ff     cmp     eax, -1
  4499.   00475    0f 84 58 01 00
  4500.     00         je     $L57175
  4501.  
  4502. ; 614  :             continue;
  4503. ; 615  : 
  4504. ; 616  :         pdwFacePrev = &rgdwFaces[iFace * 3];
  4505.  
  4506.   0047b    8b 4d e4     mov     ecx, DWORD PTR _rgdwFaces$[ebp]
  4507.   0047e    8d 04 40     lea     eax, DWORD PTR [eax+eax*2]
  4508.   00481    8d 34 81     lea     esi, DWORD PTR [ecx+eax*4]
  4509.  
  4510. ; 617  :         if (pdwFacePrev[0] == UNUSED32)
  4511.  
  4512.   00484    83 3e ff     cmp     DWORD PTR [esi], -1
  4513.   00487    0f 84 46 01 00
  4514.     00         je     $L57175
  4515.  
  4516. ; 618  :             continue;
  4517. ; 619  : 
  4518. ; 620  : 
  4519. ; 621  :         while(rgiStrips[iStripIndex] != UNUSED32)
  4520.  
  4521.   0048d    8b 45 d8     mov     eax, DWORD PTR _rgiStrips$[ebp]
  4522.   00490    8b 4d fc     mov     ecx, DWORD PTR _iStripIndex$[ebp]
  4523.   00493    8d 3c 88     lea     edi, DWORD PTR [eax+ecx*4]
  4524.   00496    83 3f ff     cmp     DWORD PTR [edi], -1
  4525.   00499    0f 84 34 01 00
  4526.     00         je     $L57175
  4527.   0049f    89 7d e0     mov     DWORD PTR tv1451[ebp], edi
  4528. $L56580:
  4529.  
  4530. ; 622  :         {
  4531. ; 623  :             if (m_bIndexSkinning)
  4532.  
  4533.   004a2    83 7b 44 00     cmp     DWORD PTR [ebx+68], 0
  4534.  
  4535. ; 624  :                 AppendIndexSkinnedPoint(cdMesh, pdwFacePrev, 0, pvMeshPoints, pvLinePoints, iCurPoint);
  4536.  
  4537.   004a6    8d 45 08     lea     eax, DWORD PTR _iCurPoint$[ebp]
  4538.   004a9    50         push     eax
  4539.   004aa    ff 75 f4     push     DWORD PTR _pvLinePoints$[ebp]
  4540.   004ad    8b cb         mov     ecx, ebx
  4541.   004af    ff 75 f0     push     DWORD PTR _pvMeshPoints$[ebp]
  4542.   004b2    8d 85 f0 fe ff
  4543.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  4544.   004b8    74 0b         je     SHORT $L56582
  4545.   004ba    6a 00         push     0
  4546.   004bc    56         push     esi
  4547.   004bd    50         push     eax
  4548.   004be    e8 00 00 00 00     call     ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendIndexSkinnedPoint
  4549.  
  4550. ; 625  :             else if (m_bSkinning)
  4551.  
  4552.   004c3    eb 18         jmp     SHORT $L56585
  4553. $L56582:
  4554.   004c5    83 7b 40 00     cmp     DWORD PTR [ebx+64], 0
  4555.   004c9    74 0b         je     SHORT $L56584
  4556.  
  4557. ; 626  :                 AppendSkinnedPoint(cdMesh, pdwFacePrev, 0, pvMeshPoints, pvLinePoints, iCurPoint);
  4558.  
  4559.   004cb    6a 00         push     0
  4560.   004cd    56         push     esi
  4561.   004ce    50         push     eax
  4562.   004cf    e8 00 00 00 00     call     ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendSkinnedPoint
  4563.  
  4564. ; 627  :             else
  4565.  
  4566.   004d4    eb 07         jmp     SHORT $L56585
  4567. $L56584:
  4568.  
  4569. ; 628  :                 AppendPoint(cdMesh, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4570.  
  4571.   004d6    56         push     esi
  4572.   004d7    50         push     eax
  4573.   004d8    e8 00 00 00 00     call     ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ; CStripOutline::AppendPoint
  4574. $L56585:
  4575.  
  4576. ; 629  : 
  4577. ; 630  :             iFace = rgiStrips[iStripIndex];
  4578. ; 631  : 
  4579. ; 632  :             pdwFaceCur = &rgdwFaces[iFace * 3];
  4580.  
  4581.   004dd    8b 07         mov     eax, DWORD PTR [edi]
  4582.   004df    8b 4d e4     mov     ecx, DWORD PTR _rgdwFaces$[ebp]
  4583.   004e2    8d 04 40     lea     eax, DWORD PTR [eax+eax*2]
  4584.   004e5    8d 3c 81     lea     edi, DWORD PTR [ecx+eax*4]
  4585.  
  4586. ; 633  :             if (pdwFaceCur[0] == UNUSED32)
  4587.  
  4588.   004e8    83 3f ff     cmp     DWORD PTR [edi], -1
  4589.   004eb    0f 84 e2 00 00
  4590.     00         je     $L57175
  4591.  
  4592. ; 634  :                 break;
  4593. ; 635  : 
  4594. ; 636  :             iCurLine += 1;
  4595.  
  4596.   004f1    ff 45 f8     inc     DWORD PTR _iCurLine$[ebp]
  4597.  
  4598. ; 637  : 
  4599. ; 638  :             if (m_bIndexSkinning)
  4600.  
  4601.   004f4    83 7b 44 00     cmp     DWORD PTR [ebx+68], 0
  4602.  
  4603. ; 639  :                 AppendIndexSkinnedMidpoint(cdMesh, pdwFaceCur, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4604.  
  4605.   004f8    8d 45 08     lea     eax, DWORD PTR _iCurPoint$[ebp]
  4606.   004fb    50         push     eax
  4607.   004fc    ff 75 f4     push     DWORD PTR _pvLinePoints$[ebp]
  4608.   004ff    8d 85 f0 fe ff
  4609.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  4610.   00505    ff 75 f0     push     DWORD PTR _pvMeshPoints$[ebp]
  4611.   00508    8b cb         mov     ecx, ebx
  4612.   0050a    56         push     esi
  4613.   0050b    57         push     edi
  4614.   0050c    50         push     eax
  4615.   0050d    74 07         je     SHORT $L56587
  4616.   0050f    e8 00 00 00 00     call     ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendIndexSkinnedMidpoint
  4617.  
  4618. ; 640  :             else if (m_bSkinning)
  4619.  
  4620.   00514    eb 12         jmp     SHORT $L56590
  4621. $L56587:
  4622.   00516    83 7b 40 00     cmp     DWORD PTR [ebx+64], 0
  4623.   0051a    74 07         je     SHORT $L56589
  4624.  
  4625. ; 641  :                 AppendSkinnedMidpoint(cdMesh, pdwFaceCur, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4626.  
  4627.   0051c    e8 00 00 00 00     call     ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendSkinnedMidpoint
  4628.  
  4629. ; 642  :             else
  4630.  
  4631.   00521    eb 05         jmp     SHORT $L56590
  4632. $L56589:
  4633.  
  4634. ; 643  :                 AppendMidpoint(cdMesh, pdwFaceCur, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4635.  
  4636.   00523    e8 00 00 00 00     call     ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendMidpoint
  4637. $L56590:
  4638.  
  4639. ; 644  : 
  4640. ; 645  :             if (m_bIndexSkinning)
  4641.  
  4642.   00528    83 7b 44 00     cmp     DWORD PTR [ebx+68], 0
  4643.  
  4644. ; 646  :                 AppendIndexSkinnedMidpoint(cdMesh, pdwFaceCur, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4645.  
  4646.   0052c    8d 45 08     lea     eax, DWORD PTR _iCurPoint$[ebp]
  4647.   0052f    50         push     eax
  4648.   00530    ff 75 f4     push     DWORD PTR _pvLinePoints$[ebp]
  4649.   00533    8d 85 f0 fe ff
  4650.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  4651.   00539    ff 75 f0     push     DWORD PTR _pvMeshPoints$[ebp]
  4652.   0053c    8b cb         mov     ecx, ebx
  4653.   0053e    56         push     esi
  4654.   0053f    57         push     edi
  4655.   00540    50         push     eax
  4656.   00541    74 07         je     SHORT $L56591
  4657.   00543    e8 00 00 00 00     call     ?AppendIndexSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendIndexSkinnedMidpoint
  4658.  
  4659. ; 647  :             else if (m_bSkinning)
  4660.  
  4661.   00548    eb 12         jmp     SHORT $L56594
  4662. $L56591:
  4663.   0054a    83 7b 40 00     cmp     DWORD PTR [ebx+64], 0
  4664.   0054e    74 07         je     SHORT $L56593
  4665.  
  4666. ; 648  :                 AppendSkinnedMidpoint(cdMesh, pdwFaceCur, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4667.  
  4668.   00550    e8 00 00 00 00     call     ?AppendSkinnedMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendSkinnedMidpoint
  4669.  
  4670. ; 649  :             else
  4671.  
  4672.   00555    eb 05         jmp     SHORT $L56594
  4673. $L56593:
  4674.  
  4675. ; 650  :                 AppendMidpoint(cdMesh, pdwFaceCur, pdwFacePrev, pvMeshPoints, pvLinePoints, iCurPoint);
  4676.  
  4677.   00557    e8 00 00 00 00     call     ?AppendMidpoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAI1PAE2AAI@Z ; CStripOutline::AppendMidpoint
  4678. $L56594:
  4679.  
  4680. ; 651  : 
  4681. ; 652  :             iCurLine += 1;
  4682.  
  4683.   0055c    ff 45 f8     inc     DWORD PTR _iCurLine$[ebp]
  4684.  
  4685. ; 653  : 
  4686. ; 654  :             if (m_bIndexSkinning)
  4687.  
  4688.   0055f    33 c0         xor     eax, eax
  4689.   00561    39 43 44     cmp     DWORD PTR [ebx+68], eax
  4690.   00564    74 1c         je     SHORT $L56595
  4691.  
  4692. ; 655  :                 AppendIndexSkinnedPoint(cdMesh, pdwFaceCur, 0, pvMeshPoints, pvLinePoints, iCurPoint);
  4693.  
  4694.   00566    8d 4d 08     lea     ecx, DWORD PTR _iCurPoint$[ebp]
  4695.   00569    51         push     ecx
  4696.   0056a    ff 75 f4     push     DWORD PTR _pvLinePoints$[ebp]
  4697.   0056d    8b cb         mov     ecx, ebx
  4698.   0056f    ff 75 f0     push     DWORD PTR _pvMeshPoints$[ebp]
  4699.   00572    50         push     eax
  4700.   00573    57         push     edi
  4701.   00574    8d 85 f0 fe ff
  4702.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  4703.   0057a    50         push     eax
  4704.   0057b    e8 00 00 00 00     call     ?AppendIndexSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendIndexSkinnedPoint
  4705.  
  4706. ; 656  :             else if (m_bSkinning)
  4707.  
  4708.   00580    eb 3a         jmp     SHORT $L56598
  4709. $L56595:
  4710.   00582    39 43 40     cmp     DWORD PTR [ebx+64], eax
  4711.   00585    74 1c         je     SHORT $L56597
  4712.  
  4713. ; 657  :                 AppendSkinnedPoint(cdMesh, pdwFaceCur, 0, pvMeshPoints, pvLinePoints, iCurPoint);
  4714.  
  4715.   00587    8d 4d 08     lea     ecx, DWORD PTR _iCurPoint$[ebp]
  4716.   0058a    51         push     ecx
  4717.   0058b    ff 75 f4     push     DWORD PTR _pvLinePoints$[ebp]
  4718.   0058e    8b cb         mov     ecx, ebx
  4719.   00590    ff 75 f0     push     DWORD PTR _pvMeshPoints$[ebp]
  4720.   00593    50         push     eax
  4721.   00594    57         push     edi
  4722.   00595    8d 85 f0 fe ff
  4723.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  4724.   0059b    50         push     eax
  4725.   0059c    e8 00 00 00 00     call     ?AppendSkinnedPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIKPAE2AAI@Z ; CStripOutline::AppendSkinnedPoint
  4726.  
  4727. ; 658  :             else
  4728.  
  4729.   005a1    eb 19         jmp     SHORT $L56598
  4730. $L56597:
  4731.  
  4732. ; 659  :                 AppendPoint(cdMesh, pdwFaceCur, pvMeshPoints, pvLinePoints, iCurPoint);
  4733.  
  4734.   005a3    8d 45 08     lea     eax, DWORD PTR _iCurPoint$[ebp]
  4735.   005a6    50         push     eax
  4736.   005a7    ff 75 f4     push     DWORD PTR _pvLinePoints$[ebp]
  4737.   005aa    8d 85 f0 fe ff
  4738.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  4739.   005b0    ff 75 f0     push     DWORD PTR _pvMeshPoints$[ebp]
  4740.   005b3    8b cb         mov     ecx, ebx
  4741.   005b5    57         push     edi
  4742.   005b6    50         push     eax
  4743.   005b7    e8 00 00 00 00     call     ?AppendPoint@CStripOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ; CStripOutline::AppendPoint
  4744. $L56598:
  4745.  
  4746. ; 660  : 
  4747. ; 661  :             iStripIndex += 1;
  4748.  
  4749.   005bc    83 45 e0 04     add     DWORD PTR tv1451[ebp], 4
  4750.   005c0    ff 45 fc     inc     DWORD PTR _iStripIndex$[ebp]
  4751.  
  4752. ; 662  : 
  4753. ; 663  :             pdwFacePrev = pdwFaceCur;
  4754.  
  4755.   005c3    8b f7         mov     esi, edi
  4756.   005c5    8b 7d e0     mov     edi, DWORD PTR tv1451[ebp]
  4757.   005c8    8b c7         mov     eax, edi
  4758.   005ca    83 38 ff     cmp     DWORD PTR [eax], -1
  4759.   005cd    0f 85 cf fe ff
  4760.     ff         jne     $L56580
  4761. $L57175:
  4762.  
  4763. ; 601  :         goto e_Exit;
  4764. ; 602  : 
  4765. ; 603  : 
  4766. ; 604  :     iStripIndex = 0;
  4767. ; 605  :     iCurPoint = 0;
  4768. ; 606  :     iCurLine = 0;
  4769. ; 607  :     while (iStripIndex < iEndOfStrips)
  4770.  
  4771.   005d3    8b 45 ec     mov     eax, DWORD PTR _iEndOfStrips$[ebp]
  4772.   005d6    39 45 fc     cmp     DWORD PTR _iStripIndex$[ebp], eax
  4773.   005d9    0f 82 87 fe ff
  4774.     ff         jb     $L56575
  4775.   005df    33 ff         xor     edi, edi
  4776. $L57188:
  4777.  
  4778. ; 664  :         }
  4779. ; 665  :     }
  4780. ; 666  :     // make sure that the points generated by walking the strips is
  4781. ; 667  :     //   not greater than what is possible
  4782. ; 668  :     GXASSERT(iCurPoint == cPointsMax);
  4783. ; 669  :     GXASSERT(iCurLine == cConnections*2);
  4784. ; 670  : 
  4785. ; 671  :     m_cLines = iCurLine;
  4786.  
  4787.   005e1    8b 45 f8     mov     eax, DWORD PTR _iCurLine$[ebp]
  4788.   005e4    89 43 5c     mov     DWORD PTR [ebx+92], eax
  4789.  
  4790. ; 672  :     m_cVertices = cPointsMax;
  4791.  
  4792.   005e7    8b 45 cc     mov     eax, DWORD PTR _cPointsMax$[ebp]
  4793.   005ea    89 43 60     mov     DWORD PTR [ebx+96], eax
  4794.  
  4795. ; 673  : 
  4796. ; 674  :     // create a vertex declaration, so that we can have D3DCOLOR instead of UBYTE4 for the matrix indices 
  4797. ; 675  :     hr = D3DXDeclaratorFromFVF(m_cfvf.m_dwFVF, pDecl);
  4798.  
  4799.   005ed    8d 85 a8 fc ff
  4800.     ff         lea     eax, DWORD PTR _pDecl$[ebp]
  4801.   005f3    50         push     eax
  4802.   005f4    ff 33         push     DWORD PTR [ebx]
  4803.   005f6    e8 00 00 00 00     call     _D3DXDeclaratorFromFVF@8
  4804.  
  4805. ; 676  :     if (FAILED(hr))
  4806.  
  4807.   005fb    3b c7         cmp     eax, edi
  4808.   005fd    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4809.   00600    7c 5c         jl     SHORT $e_Exit$56484
  4810.  
  4811. ; 681  :     while (pDeclCur->Stream != 0xff)
  4812.  
  4813.   00602    66 81 bd a8 fc
  4814.     ff ff ff 00     cmp     WORD PTR _pDecl$[ebp], 255 ; 000000ffH
  4815.   0060b    74 1f         je     SHORT $L56609
  4816.  
  4817. ; 677  :         goto e_Exit;
  4818. ; 678  : 
  4819. ; 679  :     // swap the type of any blendilndices to D3DCOLOR
  4820. ; 680  :     pDeclCur = pDecl;
  4821.  
  4822.   0060d    8d 85 ac fc ff
  4823.     ff         lea     eax, DWORD PTR _pDecl$[ebp+4]
  4824. $L56605:
  4825.  
  4826. ; 682  :     {
  4827. ; 683  :         if ((pDeclCur->Usage == D3DDECLUSAGE_BLENDINDICES) || (pDeclCur->Type == D3DDECLTYPE_FLOAT1))
  4828.  
  4829.   00613    80 78 02 02     cmp     BYTE PTR [eax+2], 2
  4830.   00617    74 05         je     SHORT $L56608
  4831.   00619    80 38 00     cmp     BYTE PTR [eax], 0
  4832.   0061c    75 03         jne     SHORT $L56607
  4833. $L56608:
  4834.  
  4835. ; 684  :         {
  4836. ; 685  :             //pDeclCur->Type = D3DDECLTYPE_UBYTE4;
  4837. ; 686  :             pDeclCur->Type = D3DDECLTYPE_D3DCOLOR;
  4838.  
  4839.   0061e    c6 00 04     mov     BYTE PTR [eax], 4
  4840. $L56607:
  4841.  
  4842. ; 687  :         }
  4843. ; 688  :         pDeclCur++;
  4844.  
  4845.   00621    83 c0 08     add     eax, 8
  4846.   00624    66 81 78 fc ff
  4847.     00         cmp     WORD PTR [eax-4], 255    ; 000000ffH
  4848.   0062a    75 e7         jne     SHORT $L56605
  4849. $L56609:
  4850.  
  4851. ; 689  :     }
  4852. ; 690  : 
  4853. ; 691  :     GXRELEASE(m_pDecl);
  4854.  
  4855.   0062c    8d 7b 50     lea     edi, DWORD PTR [ebx+80]
  4856.   0062f    8b 07         mov     eax, DWORD PTR [edi]
  4857.   00631    85 c0         test     eax, eax
  4858.   00633    74 09         je     SHORT $L56610
  4859.   00635    8b 08         mov     ecx, DWORD PTR [eax]
  4860.   00637    50         push     eax
  4861.   00638    ff 51 08     call     DWORD PTR [ecx+8]
  4862.   0063b    83 27 00     and     DWORD PTR [edi], 0
  4863. $L56610:
  4864.  
  4865. ; 692  :     hr = pDevice->CreateVertexDeclaration(pDecl, &m_pDecl);
  4866.  
  4867.   0063e    8b 45 c4     mov     eax, DWORD PTR _pDevice$[ebp]
  4868.   00641    8b 08         mov     ecx, DWORD PTR [eax]
  4869.   00643    57         push     edi
  4870.   00644    8d 95 a8 fc ff
  4871.     ff         lea     edx, DWORD PTR _pDecl$[ebp]
  4872.   0064a    52         push     edx
  4873.   0064b    50         push     eax
  4874.   0064c    ff 91 58 01 00
  4875.     00         call     DWORD PTR [ecx+344]
  4876.   00652    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  4877.  
  4878. ; 693  :     if (FAILED(hr))
  4879. ; 694  :         goto e_Exit;
  4880. ; 695  : 
  4881. ; 696  : e_Exit:
  4882.  
  4883.   00655    eb 07         jmp     SHORT $e_Exit$56484
  4884. $L56498:
  4885.  
  4886. ; 412  :     {
  4887. ; 413  :         hr = E_OUTOFMEMORY;
  4888.  
  4889.   00657    c7 45 fc 0e 00
  4890.     07 80         mov     DWORD PTR _hr$[ebp], -2147024882 ; 8007000eH
  4891. $e_Exit$56484:
  4892.  
  4893. ; 697  :     // if a 16 bit mesh, then rgdwFaces is a temporary array
  4894. ; 698  :     if (b16BitMesh)
  4895.  
  4896.   0065e    80 7d eb 00     cmp     BYTE PTR _b16BitMesh$[ebp], 0
  4897.   00662    74 0f         je     SHORT $L57186
  4898.  
  4899. ; 699  :     {
  4900. ; 700  :         delete []rgdwFaces;
  4901.  
  4902.   00664    ff 75 e4     push     DWORD PTR _rgdwFaces$[ebp]
  4903.   00667    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  4904.  
  4905. ; 701  : 
  4906. ; 702  :         if (rgwFaces != NULL)
  4907.  
  4908.   0066c    83 7d bc 00     cmp     DWORD PTR _rgwFaces$[ebp], 0
  4909.   00670    59         pop     ecx
  4910.  
  4911. ; 703  :         {
  4912. ; 704  :             pibFaces->Unlock();
  4913. ; 705  :         }
  4914. ; 706  :     }
  4915. ; 707  :     else
  4916.  
  4917.   00671    eb 04         jmp     SHORT $L57195
  4918. $L57186:
  4919.  
  4920. ; 708  :     {
  4921. ; 709  :         if (rgdwFaces != NULL)
  4922.  
  4923.   00673    83 7d e4 00     cmp     DWORD PTR _rgdwFaces$[ebp], 0
  4924. $L57195:
  4925.   00677    74 09         je     SHORT $L56621
  4926.  
  4927. ; 710  :         {
  4928. ; 711  :             pibFaces->Unlock();
  4929.  
  4930.   00679    8b 45 dc     mov     eax, DWORD PTR _pibFaces$[ebp]
  4931.   0067c    8b 08         mov     ecx, DWORD PTR [eax]
  4932.   0067e    50         push     eax
  4933.   0067f    ff 51 30     call     DWORD PTR [ecx+48]
  4934. $L56621:
  4935.  
  4936. ; 712  :         }
  4937. ; 713  :     }
  4938. ; 714  :     GXRELEASE(pibFaces);
  4939.  
  4940.   00682    8b 45 dc     mov     eax, DWORD PTR _pibFaces$[ebp]
  4941.   00685    33 f6         xor     esi, esi
  4942.   00687    3b c6         cmp     eax, esi
  4943.   00689    74 09         je     SHORT $L56622
  4944.   0068b    8b 08         mov     ecx, DWORD PTR [eax]
  4945.   0068d    50         push     eax
  4946.   0068e    ff 51 08     call     DWORD PTR [ecx+8]
  4947.   00691    89 75 dc     mov     DWORD PTR _pibFaces$[ebp], esi
  4948. $L56622:
  4949.  
  4950. ; 715  : 
  4951. ; 716  :     if (pvMeshPoints)
  4952.  
  4953.   00694    39 75 f0     cmp     DWORD PTR _pvMeshPoints$[ebp], esi
  4954.   00697    74 09         je     SHORT $L56627
  4955.  
  4956. ; 717  :     {
  4957. ; 718  :         GXASSERT(pVBVertices != NULL);
  4958. ; 719  :         pVBVertices->Unlock();
  4959.  
  4960.   00699    8b 45 d0     mov     eax, DWORD PTR _pVBVertices$[ebp]
  4961.   0069c    8b 08         mov     ecx, DWORD PTR [eax]
  4962.   0069e    50         push     eax
  4963.   0069f    ff 51 30     call     DWORD PTR [ecx+48]
  4964. $L56627:
  4965.  
  4966. ; 720  :     }
  4967. ; 721  :     GXRELEASE(pVBVertices);
  4968.  
  4969.   006a2    8b 45 d0     mov     eax, DWORD PTR _pVBVertices$[ebp]
  4970.   006a5    3b c6         cmp     eax, esi
  4971.   006a7    74 09         je     SHORT $L56628
  4972.   006a9    8b 08         mov     ecx, DWORD PTR [eax]
  4973.   006ab    50         push     eax
  4974.   006ac    ff 51 08     call     DWORD PTR [ecx+8]
  4975.   006af    89 75 d0     mov     DWORD PTR _pVBVertices$[ebp], esi
  4976. $L56628:
  4977.  
  4978. ; 722  : 
  4979. ; 723  :     delete []rgiStrips;
  4980.  
  4981.   006b2    ff 75 d8     push     DWORD PTR _rgiStrips$[ebp]
  4982.   006b5    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  4983.  
  4984. ; 724  :     delete []rgaeAttributeTableMesh;
  4985.  
  4986.   006ba    ff 75 d4     push     DWORD PTR _rgaeAttributeTableMesh$[ebp]
  4987.   006bd    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  4988.  
  4989. ; 725  : 
  4990. ; 726  :     if (pvLinePoints != NULL)
  4991.  
  4992.   006c2    39 75 f4     cmp     DWORD PTR _pvLinePoints$[ebp], esi
  4993.   006c5    59         pop     ecx
  4994.   006c6    59         pop     ecx
  4995.   006c7    74 09         je     SHORT $L56633
  4996.  
  4997. ; 727  :     {
  4998. ; 728  :         m_pVertexBuffer->Unlock();
  4999.  
  5000.   006c9    8b 5b 4c     mov     ebx, DWORD PTR [ebx+76]
  5001.   006cc    8b 03         mov     eax, DWORD PTR [ebx]
  5002.   006ce    53         push     ebx
  5003.   006cf    ff 50 30     call     DWORD PTR [eax+48]
  5004. $L56633:
  5005.  
  5006. ; 729  :         pvLinePoints = NULL;
  5007. ; 730  :     }
  5008. ; 731  : 
  5009. ; 732  :     return hr;
  5010.  
  5011.   006d2    8b 45 fc     mov     eax, DWORD PTR _hr$[ebp]
  5012.   006d5    5f         pop     edi
  5013.   006d6    5e         pop     esi
  5014.   006d7    5b         pop     ebx
  5015.  
  5016. ; 733  : }
  5017.  
  5018.   006d8    c9         leave
  5019.   006d9    c2 04 00     ret     4
  5020. ?Init@CStripOutline@@QAEJPAUID3DXBaseMesh@@@Z ENDP    ; CStripOutline::Init
  5021. _TEXT    ENDS
  5022. END
  5023.